Postgres逃脱单引号

时间:2013-08-07 11:23:54

标签: postgresql escaping quotes amazon-redshift

我有以下postgres查询:

SELECT SUM(Cost) 
FROM DB
WHERE ID NOT IN (<parameter>)

<parameter>是一个动态文本字段,需要插入多个ID。如果您输入

  

123,456

作为ID,它会导致:

SELECT SUM(Cost) 
FROM DB
WHERE ID NOT IN ('123,456')

哪个运行不正常。

我可以更改查询,但我无法更改输入字段。如果您输入

  

123' ,'456

结果是:

SELECT SUM(Cost) 
FROM DB
WHERE ID NOT IN ('123'',''456')

将查询更改为:

SELECT SUM(Cost) 
FROM DB
WHERE ID NOT IN ('<parameter>')

然后输入

  

123456   然后它导致:

SELECT SUM(Cost) 
FROM DB
WHERE ID NOT IN (''123'',''456'')

我已经让它适用于Mysql,但不适用于Postgresql。知道如何欺骗postgresql吗?

1 个答案:

答案 0 :(得分:1)

尝试类似:

SELECT SUM(Cost) 
FROM DB
WHERE ID != ALL(('{'||'123,456'||'}')::numeric[])

它将根据您的输入值形成数组字符串:{123,456},将其强制转换为数组,并针对数组的所有元素检查ID。