源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法

  • 时间:2020-02-28 01:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
NULL值影响查询条件的结果,并且结果很微妙。   以下是SQL中AND,OR,NOT的真值表。                                                 表1    AND的真值表
[b]TRUE[/b] [b]FALSE[/b] [b]NULL[/b]
[b]TRUE[/b] TRUE FALSE NULL
[b]FALSE[/b] FALSE FALSE FALSE
[b]NULL[/b] NULL FALSE NULL
                                              表2    OR的真值表
[b]TRUE[/b] [b]FALSE[/b] [b]NULL[/b]
[b]TRUE[/b] TRUE TRUE TRUE
[b]FALSE[/b] TRUE FALSE NULL
[b]NULL[/b] TRUE NULL NULL
                                              表3    NOT的真值表
[b]TRUE[/b] [b]FALSE[/b] [b]NULL[/b]
FALSE TRUE NULL
 当两个以上的查询条件与AND、OR、NOT组合时,NOT的优先级最高,其次是AND,最后是OR。为了避免歧义和确保可移植性最好使用括号。   A[b]BETWEEN[/b] B[b]AND[/b] C 等价于 (A>=B)[b]AND[/b] (A<=C),因此根据真值表可以得出BETWEEN 子句中处理NULL值的规则。   同样,A[b]IN[/b](B,C,D) 等价于 (A=B)[b]OR[/b](A=C)[b]OR[/b](A=D),  根据真值表,只要这三个表达式中有一个为NULL,结果返回肯定是NULL。   因此,[b]BETWEEN子句和IN子句[/b]并不增加SQL语句的表达能力。  SQL 中有[b]NULL [/b]值测试,即:[b]字段[/b] [b]IS (NOT[/b]) NULL ,但它的返回结果只有两种情况:TRUE或者FALSE。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部