Informix SQL中的短路

时间:2013-06-11 07:26:58

标签: sql informix short-circuiting

Informix是否支持SQL子句中的短路? 例如:

SELECT * FROM myTable
WHERE '0' IN (listOfValues) OR myTable.code IN (listOfValues) 

其中 listOfValues 是用户指定的代码列表(其中“0”表示所有代码)。

非常感谢!

1 个答案:

答案 0 :(得分:1)

嗯,是的,没有。

这取决于你如何构建listOfValues。您不能使用?占位符作为列表变量,但您确实可以将该SQL编写得很长,并且它将解析并执行您想要的操作。如果你愿意,你可以称之为短路。

SELECT * FROM myTable
WHERE '0' IN ('0') OR myTable.code IN ('0')

会做你需要的。但准备

SELECT * FROM myTable
WHERE '0' IN (?) OR myTable.code IN (?)

并使用指向列表的绑定变量执行它将产生运行时错误。

关于你应该使用绑定变量的所有usual caveats仍然适用,你只需要找到一些其他方法来解开(验证)你的输入。