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

Started by Prabhat Sahualmost 7 years ago2 messages
#1Prabhat Sahu
prabhat.sahu@enterprisedb.com

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*\x08*2 3 * +*
4*\x0B*5*\x0C*6*\r*7
(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

#2Christoph Berg
myon@debian.org
In reply to: Prabhat Sahu (#1)
Re: Inconsistencies in the behavior of CHR() function in PG.

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