Обсуждение: quote string exactly as it is

Поиск
Список
Период
Сортировка

quote string exactly as it is

От
"dario.ber@libero.it"
Дата:
Hello,

How can I quote a string *exactly* as it is? I tried using
quote_literal() but it doesn't return what I need in some cases.

E.g.

If my
string is: ss\\\ss

And I do:

select quote_literal('ss\\\ss');

I get:


E'ss\\ss'  <-- My string now has E'' added and one backslash has been removed!


What I want to do is to pass a string to a custom made function. Since the
string can contain various metacharcters I need some way to pass this string
exactly as it is.

(For those who might be interested, the strings I'm working
with are FASTQ quality scores)

I'm using Postgresql 8.3 on Windows XP

Thanks
a lot!


Dario

Re: quote string exactly as it is

От
Grzegorz Jaśkiewicz
Дата:


On Wed, Dec 2, 2009 at 12:10 PM, dario.ber@libero.it <dario.ber@libero.it> wrote:
Hello,

How can I quote a string *exactly* as it is? I tried using
quote_literal() but it doesn't return what I need in some cases.

E.g.

If my
string is: ss\\\ss

And I do:

select quote_literal('ss\\\ss');

I get:


E'ss\\ss'  <-- My string now has E'' added and one backslash has been removed!
http://www.postgresql.org/docs/8.3/static/sql-syntax-lexical.html

That E tells postgres, that string is escaped.


--
GJ

Re: quote string exactly as it is

От
Merlin Moncure
Дата:
On Wed, Dec 2, 2009 at 7:10 AM, dario.ber@libero.it <dario.ber@libero.it> wrote:
> Hello,
>
> How can I quote a string *exactly* as it is? I tried using
> quote_literal() but it doesn't return what I need in some cases.
>
> E.g.
>
> If my
> string is: ss\\\ss

dollar quote it:

select $abc$ss\\\ss$abc$;

merlin

Re: quote string exactly as it is

От
"Albe Laurenz"
Дата:
dario.ber wrote:
> How can I quote a string *exactly* as it is? I tried using 
> quote_literal() but it doesn't return what I need in some cases.
> 
> E.g.
> 
> If my 
> string is: ss\\\ss
> 
> And I do:
> 
> select quote_literal('ss\\\ss');
> 
> I get:
> 
> 
> E'ss\\ss'  <-- My string now has E'' added and one backslash 
> has been removed!
> 
> 
> What I want to do is to pass a string to a custom made function. Since the 
> string can contain various metacharcters I need some way to pass this string 
> exactly as it is.

If the backslashes are your only problem, set
standard_conforming_strings=on
(in postgresql.conf or in your session).

Then backslashes are treated as normal characters
(unless you prepend the string constant with E).

laurenz=> SET standard_conforming_strings=on;
SET
laurenz=> select quote_literal('ss\\\ss');
 quote_literal 
---------------
 E'ss\\\\\\ss'
(1 row)

Yours,
Laurenz Albe

Re: quote string exactly as it is

От
Bill Todd
Дата:
My solution was to set standard_conforming_strings = on in postgresql.conf.

Bill

dario.ber@libero.it wrote:
> Hello,
>
> How can I quote a string *exactly* as it is? I tried using
> quote_literal() but it doesn't return what I need in some cases.
>
> E.g.
>
> If my
> string is: ss\\\ss
>
> And I do:
>
> select quote_literal('ss\\\ss');
>
> I get:
>
>
> E'ss\\ss'  <-- My string now has E'' added and one backslash has been removed!
>
>
> What I want to do is to pass a string to a custom made function. Since the
> string can contain various metacharcters I need some way to pass this string
> exactly as it is.
>
> (For those who might be interested, the strings I'm working
> with are FASTQ quality scores)
>
> I'm using Postgresql 8.3 on Windows XP
>
> Thanks
> a lot!
>
>
> Dario
>
>