Ekle PostgreSQL tek tırnak ile varchar
5* *bir tablo var.
Ben eklemek deÄŸerleri gibi gerek: , *, *user's log*7 8*.
insert into test values (1,'user's log');
insert into test values (2,''my users'');
insert into test values (3,'customer's');
Eğer yukarıdaki ifadelerden birini kaçarsam bir hata alıyorum.
Eğer bunu yapmak için başka bir yöntem ise orada doğru bir şekilde paylaşın lütfen. Önceden hazırlanmış ifadeler istemiyorum.
Mümkün kullanarak sql mekanizması kaçan mı?
CEVAP
Tek tırnak kaçan 10* * - ^ ikiye katlanmış . '' yol ve çalışır tabii ki standart.
'user's log'
'user''s log'
Eğer hala standard_conforming_strings = off ile çalıştırmak ya da, genellikle, eğer E ile dize bildirmek için önüne eğer eski sürümleri yaPosıx kaçış dize sözdizimiayrıca eğik çizgi \ ile kaçış:
E'user\'s log'
Ama genellikle tercih deÄŸil.
Eğer kaçan tek tırnak ya da çok katlı birçok ile başa çıkmak için, dollar-quoted strings ile PostgreSQL cehennemde alıntı yapabilirsiniz:
'escape '' with '''''
$$escape ' with ''$$
Daha fazla dolar-tırnak arasında karışıklığı önlemek için, dolar fiyatları için daha fazla veya daha az benzersiz bir simge Ekle:
$token$escape ' with ''$token$
Eğer $ karakter istemci yazılımı özel bir anlamı varsa dikkat edin. Ayrıca böyle bir planı olabilir. Bu numarasını veya pgAdmin PostgreSQL gibi standart müşteriler ile durum böyle değil.
Bu işlevler veya ad-hoc SQL komutları plpgsql yazmak için çok yararlıdır. Uygulamanız hazırlanmış deyimleri ya da başka bir yöntem SQL enjeksiyon karşı korumak için kullanmak gerekir, ama hafifletmek olamaz. @Craig's answer bu konuda daha fazla. Daha fazla bilgi için:

taklit ne kadar "Ekle Yoksay"...
Nasıl bir UPSERT (BİRLEŞTİR, EKLE ... ...
Ekle bir değeri MySQL tek tırnak içere...
PostgreSQL hata: Fatal: rol "kull...
Alter Table Sözdizimi Sütun Ekle...