Mat*_*ell 5 sql t-sql sql-server
我想知道为什么以下失败:
SELECT price<500 as PriceIsCheap
Run Code Online (Sandbox Code Playgroud)
并强迫您执行以下操作:
SELECT CASE WHEN (price<500) THEN 1 ELSE 0 END as PriceIsCheap
Run Code Online (Sandbox Code Playgroud)
如果,按照回答此相关的问题时,转换表说,隐式转换应该发生.
在SQL没有布尔数据类型,BIT是怎样的一个黑客,但主要问题是,由于的SQL概念NULL真正的布尔逻辑是不可能的(例如,你会有什么回报查询,如果price是NULL?)
请注意,我并不是说没有可能的方法来实现"大部分"工作的布尔逻辑(例如,你可以说TRUE OR NULL是NULL或者其他)只是设计SQL标准的人无法决定The One布尔逻辑的真实表示(例如,您也可以认为TRUE OR NULL是TRUE,因为TRUE OR <anything>是TRUE).
布尔表达式(=,<=,> =等)仅在某些地方(特别是WHERE子句和CASE标签)有效,而不在任何其他地方有效.