0

我有以下 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>')

然后你输入

123,456 然后它导致:

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

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

4

1 回答 1

1

尝试类似:

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

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

于 2013-08-07T11:59:06.587 回答