在sql中替代1 = 2

时间:2014-09-09 13:28:30

标签: sql tsql

是否有任何替代,更优雅的表达式为1 = 2,可以在sql的where子句中使用?

类似于WHERE false

的东西

无法在谷歌找到答案。

修改

在C ++等语言中,表达式(1 == 2)和0是等价的,为什么TSQL不接受falsetrue作为条件?

3 个答案:

答案 0 :(得分:1)

那么,TSQL将WHERE子句定义为WHERE <search_condition>,其中包含各种“复杂”?排除“表达式结果”的语法。以下是"search_condition"的参考。

False4是表达式结果。

您期望的可能更合乎逻辑,因为WHERE充当输入/输出门,当然任何评估的“search_condition”都代表一个布尔值。但是对于TSQL,它必须是“search_condition”而不是布尔值可评估的表达式。

Ms-Access以您提及的方式工作,其中WHERE子句仅用于表达式的评估,是的,仅用于表达式的评估。

这在Ms-Access

中有效
where false                --  excludes all
where 4                    --  includes all, as casts to true
where mycolumn = 'aa'      --  depends on mycolumn content

答案 1 :(得分:0)

首先,我认为1=2本身就很优雅。因此,您需要准确指定在哪种情况下或如何使用它。下一个1=2指定错误条件(您已经知道)。这主要用于检查错误情况时,例如当您想要创建表的模式而不复制数据时。类似的事情是1=1,它用于真实条件。

就性能而言,我认为1=2将是一个更好的选择(但我不是100%确定

答案 2 :(得分:0)

你也可以在where子句中使用 false 关键字。