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