Обсуждение: BUG #15974: Concact with || doesn't work, but function CONCAT () works

Поиск
Список
Период
Сортировка

BUG #15974: Concact with || doesn't work, but function CONCAT () works

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      15974
Logged by:          Tessari Andrea
Email address:      tessari@gmail.com
PostgreSQL version: 11.4
Operating system:   linux - Red Hat 7.6
Description:

Example.
 ( I test on postgres 11.4 and postgres 10.9 (edb) )

create table AA3 (CLIV CHAR(2), SSTT CHAR(1));
 INSERT INTO AA3 (CLIV,SSTT)  VALUES ('  ','2');
 COMMIT;
---errore expect "A  Z"  --> result "AZ"
select  'A'||(CASE    WHEN J01.CLIV = '  ' THEN '  '
    ELSE J01.CLIV   END)||'Z' as X
from AA3 J01;

---errore expect "A  "--> result "A"
select  'A'||(CASE    WHEN J01.CLIV = '  ' THEN '  '
    ELSE J01.CLIV 
  END) as X
from AA3 J01;

---errore expect "  Z"--> result "Z"
select  (CASE    WHEN J01.CLIV = '  ' THEN '  '
    ELSE J01.CLIV 
  END)||'Z' as X
from AA3 J01;

--WORKS - show "  "--> result "  "
select 
 (CASE    WHEN J01.CLIV = '  ' THEN '  '
    ELSE J01.CLIV 
  END) as X
from AA3 J01;

-- WORKS     
select  'A'||(CASE    WHEN CLIV = '  ' THEN '  '    ELSE '  '  END)||'Z' from AA3
;

-- WORKS
select  CONCAT ('A', x,'Z') FROM 
 (SELECT CASE    WHEN CLIV = '  ' THEN '  '    ELSE CLIV  END AS X from AA3) 
 ;


Re: BUG #15974: Concact with || doesn't work, but function CONCAT () works

От
"David G. Johnston"
Дата:
On Fri, Aug 23, 2019 at 4:17 AM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15974
Logged by:          Tessari Andrea
Email address:      tessari@gmail.com
PostgreSQL version: 11.4
Operating system:   linux - Red Hat 7.6
Description:       

Example.
 ( I test on postgres 11.4 and postgres 10.9 (edb) )

create table AA3 (CLIV CHAR(2), SSTT CHAR(1));
 INSERT INTO AA3 (CLIV,SSTT)  VALUES ('  ','2');

In general most behaviors involving the "char" data type are what they are and you can either accept them as-is or change to text to get more logical/consistent behavior.

If you want a more in depth analysis of how char behaves in various situations there are a number of posts in the archives where people have taken the time to explain in detail what is happening.  Or someone may do that here...but that someone isn't me.

If you want to claim these are buggy you'd need to point to documentation that isn't being adhered to not just expectations.

David J.