mysql 查询某个字段为空或不为空的数据

mysql 查询某个字段为空或不为空的数据,第1张

查询字段为空的数据。如下三条语句查询的结果各不相同。

select count(0) from tps_uw_detail where trim(coreContNo)=''###1736

select count(0) from  tps_uw_detail where coreContNo is null###735

select count(0) from  tps_uw_detail where (coreContNo is null or trim(coreContNo)='')##2471

=''就是存的空字符串;is null 就是默认的。

由于是后来新加的字段,默认为null,所以历史数据都为null。表中加上这个字段后,再落库的数据就是空字符串了。

根据自己的需求选用脚本,第三个是适合我的。

字段为空有两种情况

判断字段为空

判断字段不为空

trim可以不写,直接写(column)

参考: https://www.cnblogs.com/kingboy-xin/p/10825085.html .

"空值"是对null值的中文叫法,两者同指一个东西。

我想楼主是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。

在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型,存储"零长度字符串"是要占用物理磁盘空间的;

而null值其数据类型是未知的,它不会占用物理磁盘空间。

在不存在约束限制的情况我们可以将Null值插入任何数据类型的字段里,而零长度字符串''只能插入到字符型数据类型字段中,插入其它类型字段会报错。

我们通过实测看看null(空值)与零长度字符串''(或称为空字符长)之间的区别:

1)输出所有的记录

select * from students

注意:此例输出源表中的全部记录,含null(空值)和零长度字符串''.

2)输出电话为Null(空值)的记录

select * from students where phone is null

注意:此例只输出含Null(空值)的记录

3)输出电话为零长度字符串的记录

select * from students where phone=''

注意:此例只输出含零长度字符串的记录。

4)输出电话不是零长度字符串的记录

select * from students where phone<>''

注意:此例MySQL的处理方式有些特别,连含Null值得记录也排除掉了,这与MSSQL的处理方式有点不一致。

5)输出电话不为空的记录

select * from students where phone is not null

注意:此例只要不含Null值的记录都予以输出


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7155595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存