Postgresql-“;“在空数组中”;语法
我以编程方式向Postgresql创建sql查询,如下所示:Postgresql-“;“在空数组中”;语法,postgresql,Postgresql,我以编程方式向Postgresql创建sql查询,如下所示: SELECT * FROM table WHERE column IN (1, 2, 3); SELECT * FROM table WHERE column IN (1); SELECT * FROM table WHERE column IN (); 最后一个查询生成语法错误。如何处理这种特殊情况并在此处写入空数组?使用不返回结果的子查询: select null where 0 = 1 此处的null也应该可以隐式转换为任何
SELECT * FROM table WHERE column IN (1, 2, 3);
SELECT * FROM table WHERE column IN (1);
SELECT * FROM table WHERE column IN ();
最后一个查询生成语法错误。如何处理这种特殊情况并在此处写入空数组?使用不返回结果的子查询:
select null where 0 = 1
此处的null
也应该可以隐式转换为任何类型。唯一重要的是,查询不返回任何结果。对于您的情况,使用选择0
或其他一些整数(如果您觉得更清楚的话)同样有效
虽然可以在列表中插入一个literalnull
值,但我不建议这样做。有些平台的服务器设置允许空相等测试。我怀疑优化器会更好地处理子查询表单。如果不从dual添加,这在Oracle上是行不通的,但它通常也是可移植的。在内部
col IN (1, 2, 3)
转换为
col = ANY (ARRAY[1,2,3]::integer[])
该语法也适用于空数组:
col = ANY (ARRAY[]::integer[])