sql判定空值的几种方法

打印 上一主题 下一主题

主题 835|帖子 835|积分 2505

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

  在开始前我们先来做一个思考,如下图:

图1

根据上图箭头所指的位置,我们该如何分别去判定空?表从上到下依次为:t_user,t_user_1,t_user_2,下面分三种环境去聊聊。
1. is null

  命令行查t_user表

从命令行可以看出第五条数据存在空值,那么我们实行如下语句试试:
  1. select * from t_user where id='NULL'
复制代码
 运行效果:

可以看到并没有查出数据,这里存在一个可视化的问题,就是在命令行显示的空值和在可视化工具显示会有偏差,我们转去可视化工具查看:

这里就容易出现问题了,为了更清楚看到数据,我们可以导出表数据(字段id的数据类型tinytext):


可以看到箭头指向的值是NULL,并不是'NULL',这就是空值和字符的区别,所以我们上面实行的语句显然查不出。
SQL中有判定空值的关键字,那就是is null,我们实行如下语句:
  1. select * from t_user where id is null
复制代码
 实行效果:

2. =''

  先查下表t_user_1:  

  可以看到最后一行是空缺的,我们再导出sql看下语句:  

  也是空的字符,由此可以用=''作为关键字来查询
  1. select * from t_user_1 where id =''
复制代码
 实行效果:

3. ='NULL'

  先查下表t_user_2:
  

查出来的效果和第一点同等,那也是一样的语句吗?前面提到过命令行和可视化工具会有偏差,那么我们导出语句对比一下:

可以看出上面的是空值,而下面的是字符NULL,不要混淆两者。对于字符的NULL,可以用='NULL'='null'关键字查询:
  1. select * from t_user_2 where id='NULL'
复制代码

  1. select * from t_user_2 where id='null'
复制代码
  今天的分享到这里,更多分享:公众号【积极向上的阿虫】 复兴navicat领取工具


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表