Re: Can not match 0 on bytea - Mailing list pgsql-general

From Tom Lane
Subject Re: Can not match 0 on bytea
Date
Msg-id 25636.1267288004@sss.pgh.pa.us
Whole thread Raw
In response to Can not match 0 on bytea  (seiliki@so-net.net.tw)
List pgsql-general
seiliki@so-net.net.tw writes:
> Data type of table1.c1 is bytea. That column stores binary data. The following matchings do not work. What is the
rightsyntax? 

> TIA
> CN
> ---------------
> select c1 ~ E'\000' from table1;
> select c1 LIKE E'%\000%' from table1;

> ERROR:  invalid byte sequence for encoding "UTF8": 0x00

The reason that doesn't work is that E'\000' is initially a text
literal, with the backslash sequence being processed by the string
literal parser; and a zero byte isn't allowed in text.

Try it with E'\\000'.  What this gives rise to is a text constant
containing the four characters \ 0 0 0, and then when that gets
converted to bytea, another round of backslash processing will happen
to produce the (legal) bytea constant with a single zero byte.

            regards, tom lane

pgsql-general by date:

Previous
From: Osvaldo Kussama
Date:
Subject: Re: regexp_replace: LF, CR, or tab
Next
From: rihad
Date:
Subject: Partial foreign keys