sql复合查询与null对查询结果影响分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了sql复合查询与null对查询结果影响分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1728字,纯文字阅读大概需要3分钟。
内容图文
![sql复合查询与null对查询结果影响分析](/upload/InfoBanner/zyjiaocheng/544/e9914318e55240e3a0ebcd4387f157f2.jpg)
代码如下:
* from expert_details twhere t.modifier = ''
没有检索出一条记录,而这与存储在该表中的记录是不相符的。后来想到即便是空字符型存储在中也应该是null而不是''。
然后我使用下列sql 语句,仍然没有检索出一条记录。
代码如下:
select * from expert_details t
where t.modifier = null
最后我想到了sql中的null 值测试。使用如下语句,终于检索出了想要的结果。
代码如下:
select * from expert_details t
where t.modifier is null
在sql语句中,where 子句:where t.modifier = null ,这里不可以使用null关键字,因为它不是一个真正的值,它仅仅是一个符号,因为它的值是未知的。当t.modifier本身就是null时,即where子句为:where null= null ,当等号两边的值都是未知的时候,结果是true还是false,sql不能给出一个明确的结果,所以查询出的结果也为null。
因此必须明确使用null值测试即 字段 is null 或者其否定形式 字段 is not null 来检测null值。
以下是sql中and,or,not的真值表。
表1 and的真值表
true |
false |
null |
|
true |
true |
false |
null |
false |
false |
false |
false |
null |
null |
false |
null |
表2 or的真值表
true |
false |
null |
|
true |
true |
true |
true |
false |
true |
false |
null |
null |
true |
null |
null |
表3 not的真值表
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复合查询与null对查询结果影响分析全部内容,希望文章能够帮你解决sql复合查询与null对查询结果影响分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。