Informix是否支持SQL子句中的短路? 例如:
SELECT * FROM myTable
WHERE '0' IN (listOfValues) OR myTable.code IN (listOfValues)
其中 listOfValues 是用户指定的代码列表(其中“0”表示所有代码)。
非常感谢!
答案 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仍然适用,你只需要找到一些其他方法来解开(验证)你的输入。