SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
2011-04-15 01:02
896 查看
NULL值影响查询条件的结果,并且结果很微妙。
表2 OR的真值表
表3 NOT的真值表
以下是SQL中AND,OR,NOT的真值表。
表1 AND的真值表
TRUE |
FALSE |
NULL |
|
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
TRUE |
FALSE |
NULL |
|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
TRUE |
FALSE |
NULL |
FALSE |
TRUE |
NULL |
当两个以上的查询条件与AND、OR、NOT组合时,NOT的优先级最高,其次是AND,最后是OR。为了避免歧义和确保可移植性最好使用括号。
A BETWEEN B AND C 等价于 (A>=B) AND (A<=C),因此根据真值表可以得出BETWEEN 子句中处理NULL值的规则。
同样,A IN(B,C,D) 等价于 (A=B)OR(A=C)OR(A=D), 根据真值表,只要这三个表达式中有一个为NULL,结果返回肯定是NULL。
因此,BETWEEN子句和IN子句并不增加SQL语句的表达能力。
SQL 中有NULL 值测试,即:字段 IS (NOT) NULL ,但它的返回结果只有两种情况:TRUE或者FALSE。
您可能感兴趣的文章:
相关文章推荐
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- SQLServer复合查询条件(AND,OR,NOT)对NULL值的处理方法
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理
- Thinkphp 查询条件 and 和 or同时使用即复合查询
- Thinkphp 查询条件 and 和 or同时使用即复合查询
- sql的where条件中包含中文,查询不出来的处理方法
- Thinkphp 查询条件 and 和 or同时使用即复合查询
- Microsoft SQL Server中条件字段是Nvarchar类型的,条件有中文的无法查询的原因及处理方法
- mybatis处理and、or关系的方法
- Hibernate Native SQL查询常用的2种方法及对返回结果处理
- 第一个文章,今天比较兴奋啊! 给大家一个关于SQL复合查询的文章(动态生成多个where条件)
- Cannot connect to WMI provider.You do not have permission or the server is unreachable.Note that you can only manager SQL Server 2005 and later version with SQL Server Configuration Manager.Invalid namespace [0x8004100e]
- Lucene进阶:and 和or的条件查询
- 通过链接服务器查询视图得到“意外的Null值(MessageID:7342)”错误的处理方法
- Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法
- thinkphp多条件查询(AND, OR)
- SQL 查询语句 IIF()处理条件判断
- Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法
- 一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句
- sql 多条件查询的一种简单的方法