Thread: Inconsistencies in the behavior of CHR() function in PG.

Inconsistencies in the behavior of CHR() function in PG.

From
Prabhat Sahu
Date:
Hi All,

While trying to explore on CHR() function in PG, 
I found that few of the ASCII values are returning hex number values(like '\x08', '\x0B') 
and few are executing within SQL (i.e. chr(9) => Horizontal tab,  chr(10) => Line feed) as below example.

postgres=# select 1|| chr(8)|| 2 || chr(9)||3 || chr(10)||4 || chr(11)||5 || chr(12)||6 || chr(13)||7  as col1;
      col1      
----------------
 1\x082  3     +
 4\x0B5\x0C6\r7
(1 row)

My question here is, why these inconsistencies in the behavior of CHR() function? 

--


With Regards,

Prabhat Kumar Sahu
Skype ID: prabhat.sahu1984
EnterpriseDB Corporation

The Postgres Database Company

Re: Inconsistencies in the behavior of CHR() function in PG.

From
Christoph Berg
Date:
Re: Prabhat Sahu 2019-03-29 <CANEvxPqaQqojU+XyKrfiwt729P+ZikjYsfn=hQhEzcTKm5iWoQ@mail.gmail.com>
> While trying to explore on CHR() function in PG,
> I found that few of the ASCII values are returning hex number values(like
> '\x08', '\x0B')
> and few are executing within SQL (i.e. chr(9) => Horizontal tab,  chr(10)
> => Line feed) as below example.

That's not a property of chr(), but generally of the "text" datatype:

# select E'\002'::text;
 text
──────
 \x02

Non-printable characters are quoted. See also:

# select i, chr(i) from generate_series(1, 256) g(i);

Christoph