【问题标题】:Short circuiting in Informix SQLInformix SQL 中的短路
【发布时间】:2013-06-06 23:32:54
【问题描述】:

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

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

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

非常感谢!

【问题讨论】:

    标签: sql informix short-circuiting


    【解决方案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 仍然适用,您只需要找到其他方法来清除(验证)您的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2010-09-27
      • 2012-12-26
      • 1970-01-01
      • 2011-10-15
      • 2010-10-16
      • 2023-03-25
      相关资源
      最近更新 更多