Thread: quote string exactly as it is

quote string exactly as it is

From
"dario.ber@libero.it"
Date:
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

From
Grzegorz Jaśkiewicz
Date:


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

From
Merlin Moncure
Date:
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

From
"Albe Laurenz"
Date:
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

From
Bill Todd
Date:
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
>
>