Informix SQL 中的短路
Posted
技术标签:
【中文标题】Informix SQL 中的短路【英文标题】:Short circuiting in Informix SQL 【发布时间】:2013-06-06 23:32:54 【问题描述】:Informix 是否支持 SQL 子句中的短路? 例如:
SELECT * FROM myTable
WHERE '0' IN (listOfValues) OR myTable.code IN (listOfValues)
其中 listOfValues 是用户指定的代码列表(其中“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 仍然适用,您只需要找到其他方法来清除(验证)您的输入。
【讨论】:
以上是关于Informix SQL 中的短路的主要内容,如果未能解决你的问题,请参考以下文章
将存储过程从 MS SQL Server 转换为 Informix
Informix 数据库中的 Hibernate 批量插入(获取 sql 日志跟踪)