Search Postgresql Archives

Re: || versus concat( ), diff behavior

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/03/12 20:58, david.sahagian@xxxxxxx wrote:
Can anybody please point me to where this "difference of behavior" is explained/documented ?
Thanks,
-dvs-

-- version = 9.1.3
do $$
declare
   v_str  char(10);
begin
   v_str := 'abc' ;
   raise info '%', concat(v_str, v_str) ;
   raise info '%', v_str||v_str ;
end
$$;

INFO:  abc       abc
INFO:  abcabc



Concat is a function which concatenates whatever you give it blindly. Hence it has the behavior that includes the blanks.

The || operator reflects the more general PostgreSQL principle that trailing blanks are insignificant for char fields. You see the same behavior when comparing char variables.


This can be found in the manual:

http://www.postgresql.org/docs/current/static/datatype-character.html

Values of type character are physically padded with spaces to the specified width n, and are stored and displayed that way. However, the padding spaces are treated as semantically insignificant. Trailing spaces are disregarded when comparing two values of type character, and they will be removed when converting a character value to one of the other string types. Note that trailing spaces are semantically significant in character varying and text values, and when using pattern matching, e.g. LIKE, regular expressions.


Hope this makes it just a little clearer.

Regards

--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux