我有以下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吗?
答案 0 :(得分:1)
尝试类似:
SELECT SUM(Cost)
FROM DB
WHERE ID != ALL(('{'||'123,456'||'}')::numeric[])
它将根据您的输入值形成数组字符串:{123,456}
,将其强制转换为数组,并针对数组的所有元素检查ID。