是否有任何替代,更优雅的表达式为1 = 2,可以在sql的where子句中使用?
类似于WHERE false
无法在谷歌找到答案。
修改
在C ++等语言中,表达式(1 == 2)和0是等价的,为什么TSQL不接受false
或true
作为条件?
答案 0 :(得分:1)
那么,TSQL将WHERE
子句定义为WHERE <search_condition>
,其中包含各种“复杂”?排除“表达式结果”的语法。以下是"search_condition"的参考。
False
,4
是表达式结果。
您期望的可能更合乎逻辑,因为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 关键字。