PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Coloque $$ na string cotada em dólar no PostgreSQL


Use diferentes cotações de dólar em vez de:
select upsert(
   $unique_token$INSERT INTO zz(a, b) VALUES (66, 'ha$$hahaha')$unique_token$,
   $unique_token2$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$unique_token2$
   )

Cada extremidade tem que corresponder a cada início. Os dois pares não precisam ser distintos, mas é mais seguro assim.

Isso ainda deixa uma chance teórica de que a cotação do dólar possa ser correspondida dentro da string.

Se você estiver criando a consulta manualmente, verifique se há $ na string. Se você estiver criando a consulta a partir de variáveis, poderá usar quote_literal(querystring) em vez de.

Há também o conveniente format() função.

Ver:

À parte:suponho que você esteja ciente de que essa forma de SQL dinâmico é extremamente vulnerável à injeção de SQL? Qualquer coisa do tipo deve ser apenas para uso muito privado ou muito seguro.