sql >> Database teknologi >  >> RDS >> PostgreSQL

Sæt $$ i dollar-citeret streng i PostgreSQL

Brug forskellige dollar-citater a> i stedet:

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$
   )

Hver ende skal matche hver start. De to par behøver ikke at være adskilte, men det er sikrest på den måde.

Dette efterlader stadig en teoretisk chance for, at dollar-citatet kan matches inde i strengen.

Hvis du bygger forespørgslen i hånden, skal du bare tjekke efter $ i strengen.Hvis du bygger forespørgslen ud fra variabler, kan du bruge quote_literal(querystring) i stedet.

Der er også det praktiske format() funktion.

Se:

Til side:Jeg går ud fra, at du er klar over, at denne form for dynamisk SQL er ekstremt sårbar over for SQL-injektion? Alt af den slags bør kun være til meget privat eller meget sikker brug.




  1. Sådan arbejder du med PL/SQL-arrays eller samlinger som parametre, så JOIN dem sammen ved indeks

  2. Hent flere rækker med forespørgsel ved hjælp af OG og ELLER

  3. Hent kolonneværdi fra streng kolonnenavn sql

  4. DATETIME2FROMPARTS() Eksempler i SQL Server (T-SQL)