Gunakan dolar-quotes sebagai gantinya:
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$ )
Setiap akhir harus cocok dengan setiap awal. Kedua pasangan tidak harus berbeda, tetapi paling aman seperti itu.
Ini masih menyisakan peluang teoretis bahwa kutipan dolar mungkin cocok di dalam string.
Jika Anda membuat kueri secara manual, cukup periksa $
dalam string. Jika Anda membuat kueri dari variabel, Anda dapat menggunakan quote_literal(querystring)
sebagai gantinya.
Ada juga format()
fungsi.
Lihat:
Selain:Saya berasumsi Anda tahu bahwa bentuk SQL dinamis ini sangat rentan terhadap injeksi SQL? Hal semacam itu seharusnya hanya untuk penggunaan yang sangat pribadi atau sangat aman.