我有一个使用数组的查询,如下所示:
SELECT * FROM devices WHERE code = ANY ('{"value1","value2","..."}');
如果value1
是,val"ue1
则查询将失败。我可以通过在双引号前使用反斜杠来解决此问题。我正在尝试使用标准pg_函数对此进行转义pg_escape_string
,pg_escape_literal
或者pg_escape_identifier
似乎无法正确格式化字符串。
是否有特定的函数可以逃脱这些类型的数组,还是只使用自己编写?
关于如何编写查询,是否有更好的建议?
理想情况下,我想为此使用参数化查询,但似乎无法将数组作为参数传递给pg_query_params()
提前谢谢了。
您可以使用以下修改后的查询版本:
SELECT * FROM devices WHERE code = ANY (ARRAY['value1','value2','...']::text[]);
转义value1
..valueN
使用pg_escape_string
并用单引号引起来。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句