How to escape quotes in Postgresql?

Asked

Viewed 10,991 times

10

I have a postgresql function function f_criaproduto(p_texto text), I have to go this way f_criaproduto(' meu produto é 'televisao' da melhor qualidade').

How can I escape the quotation marks in the text?

  • 3

    Which error appears? the problem is to undo single quotes?

3 answers

10

To escape quotes, you can duplicate them. Example:

f_criaproduto('meu produto é ''televisao'' da melhor qualidade')

To avoid the problem of having too many quotes to exhaust, you can use the dollars syntax:

$$meu produto é 'televisao' da melhor qualidade$$

Note that in this case, the string is set with a pair of dollars instead of quotation marks. If your string also has dollars, you can use a tag to do this by setting it between the dollars. For example, to set the string minha 'televisao' custa uma boa $!

$string$minha 'televisao' custa uma boa $!$string$

It is still possible to use the character \ you need two things:

  1. in the configuration file, you must enable standard_conforming_strings:

    standard_conforming_strings = off

  2. Start your strings with E. Example:

    E'meu produto é \'televisao\' da melhor qualidade'

But this last option is old and should be avoided if possible

9

Simply duplicate the single quotes to generate one escape.

Example:

f_criaproduto(' meu produto é ''televisao'' da melhor qualidade')

0

The $ delimiter can be used to separate expressions. Example:

DO $_$
BEGIN
    RETURN QUERY EXECUTE $$ || SELECT * FROM alunos || $$;
END;
$_$

Note that the use of the $ can be named: $x$ or $test$. Do not forget that it is necessary to close the same way you started

Browser other questions tagged

You are not signed in. Login or sign up in order to post.