On 08/16/2018 07:47 AM, Andreas Joseph Krogh wrote:
På torsdag 16. august 2018 kl. 16:32:40, skrev Adrian Klaver
<adrian.klaver@xxxxxxxxxxx <mailto:adrian.klaver@xxxxxxxxxxx>>:
On 08/16/2018 07:04 AM, Andreas Joseph Krogh wrote:
> char(2006) produces the wrong character as 2006 is the hex-value. You
> have to use 8198:
> andreak@[local]:543310.4 andreak=# select version();
>
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
> │ version
> │
>
├────────────────────────────────────────────────────────────────────────────────────────────────┤
> │ PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu
> 7.3.0-16ubuntu3) 7.3.0, 64-bit │
>
└────────────────────────────────────────────────────────────────────────────────────────────────┘
> (1 row)
>
> andreak@[local]:543310.4 andreak=# select 'abcd'||chr(8198) ~
'abcd\s';
> ┌──────────┐
> │ ?column? │
> ├──────────┤
> │ t │
> └──────────┘
> (1 row)
Argh, read the wrong line. Thanks for the correction. Still:
test=# select version();
version
------------------------------------------------------------------------------------
PostgreSQL 10.5 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux)
4.8.5, 64-bit
(1 row)
test=# select 'abcd'||chr(8198) ~ E'abcd\s';
?column?
----------
f
(1 row)
When using E-syntax you need to double the backslash for escaping:
andreak@[local]:543310.4 andreak=# select 'abcd'||chr(8198) ~ E'abcd\\s';
┌──────────┐
│ ?column? │
├──────────┤
│ t │
└──────────┘
(1 row)
Hmm:
test=# show standard_conforming_strings;
standard_conforming_strings
-----------------------------
off
(1 row)
test=# show escape_string_warning;
escape_string_warning
-----------------------
on
(1 row)
test=# select 'abcd'||chr(8198) ~ 'abcd\s';
WARNING: nonstandard use of escape in a string literal
LINE 1: select 'abcd'||chr(8198) ~ 'abcd\s';
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
?column?
----------
f
(1 row)
test=# select 'abcd'||chr(8198) ~ 'abcd\\s';
WARNING: nonstandard use of \\ in a string literal
LINE 1: select 'abcd'||chr(8198) ~ 'abcd\\s';
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
?column?
----------
t
(1 row)
test=# set escape_string_warning = 'off';
SET
test=# show escape_string_warning;
escape_string_warning
-----------------------
off
(1 row)
test=# select 'abcd'||chr(8198) ~ 'abcd\s';
?column?
----------
f
(1 row)
test=# set standard_conforming_strings = 'on';
SET
test=# show standard_conforming_strings;
standard_conforming_strings
-----------------------------
on
(1 row)
test=# select 'abcd'||chr(8198) ~ 'abcd\s';
?column?
----------
t
(1 row)
Wonder if the OP has standard_conforming_strings='off' and
escape_string_warning='off'?
--
*Andreas Joseph Krogh*
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andreas@xxxxxxxxxx <mailto:andreas@xxxxxxxxxx>
www.visena.com <https://www.visena.com>
<https://www.visena.com>
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx