涛声依旧在 发表于 2024-7-15 02:50:54

sql判定空值的几种方法

目录
1. is null
2. =''
3. ='NULL'

  在开始前我们先来做一个思考,如下图:
https://img-blog.csdnimg.cn/direct/4a202832202f4c3c91db202eb04a6a2c.png
图1
根据上图箭头所指的位置,我们该如何分别去判定空?表从上到下依次为:t_user,t_user_1,t_user_2,下面分三种环境去聊聊。
1. is null

  命令行查t_user表
https://img-blog.csdnimg.cn/direct/fc28568d48c04ac295e6c161d6cd6720.png
从命令行可以看出第五条数据存在空值,那么我们实行如下语句试试:
select * from t_user where id='NULL'  运行效果:
https://img-blog.csdnimg.cn/direct/f849a10669894606b573eca6b2f87a45.png
可以看到并没有查出数据,这里存在一个可视化的问题,就是在命令行显示的空值和在可视化工具显示会有偏差,我们转去可视化工具查看:
https://img-blog.csdnimg.cn/direct/d7e7a3f15e9d40c2b91c529fbce45f6d.png
这里就容易出现问题了,为了更清楚看到数据,我们可以导出表数据(字段id的数据类型tinytext):
https://img-blog.csdnimg.cn/direct/cb9ca2c2170e40e498603e56bbb994c0.png
可以看到箭头指向的值是NULL,并不是'NULL',这就是空值和字符的区别,所以我们上面实行的语句显然查不出。
SQL中有判定空值的关键字,那就是is null,我们实行如下语句:
select * from t_user where id is null  实行效果:
https://img-blog.csdnimg.cn/direct/2dcbc4d145694bb5b4dba6ea3c8a92b9.png
2. =''

  先查下表t_user_1:  
https://img-blog.csdnimg.cn/direct/6d451c6a4129491c86aa7d8a981ffcb5.png
  可以看到最后一行是空缺的,我们再导出sql看下语句:  https://img-blog.csdnimg.cn/direct/cf476b59866645ba88d63510c6e3ba76.png
  也是空的字符,由此可以用=''作为关键字来查询
select * from t_user_1 where id =''  实行效果:
https://img-blog.csdnimg.cn/direct/a04d13bd2e624762a79acf80ab20d082.png
3. ='NULL'

  先查下表t_user_2:
  https://img-blog.csdnimg.cn/direct/4cb82433110f47c68b0c64b742620153.png
查出来的效果和第一点同等,那也是一样的语句吗?前面提到过命令行和可视化工具会有偏差,那么我们导出语句对比一下:
https://img-blog.csdnimg.cn/direct/f8957da729824f6c95b14f3bf5685d72.png
可以看出上面的是空值,而下面的是字符NULL,不要混淆两者。对于字符的NULL,可以用='NULL'或='null'关键字查询:
select * from t_user_2 where id='NULL' 或
select * from t_user_2 where id='null'   今天的分享到这里,更多分享:公众号【积极向上的阿虫】 复兴navicat领取工具


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: sql判定空值的几种方法