MySQL中的 空值(null)和空字符(‘‘)

本文探讨了空值null和空字符串''的差异。空值长度为null,占用不确定空间,判断使用isnull。空字符串长度为0,不占空间,判断用=''或!=''.在数据库查询中,即使字段定义为notnull,仍可能返回null,如记录不存在。建议避免使用null作为默认值,以防止影响索引效率。处理空值可使用ifnull()函数。
摘要由CSDN通过智能技术生成

空值(null)和空字符(‘’)是两个比较容易混淆的概念。
本文对两者的区别做简单梳理。

长度和判空

长度判断空
空值null长度为null,占空间,但具体占用多大空间不确定。判断null用is null或is not null
空字符串’’长度为0,不占用空间。判断空字符用=‘‘或者!=’’

ifnull

对于空值null,可以使用ifnull()函数进行处理。
例如,

select ifnull(comment, '') from orange where id=100;

如果comment字段为null,就返回空字符串。

字段定义为not null,查询的时候也可能返回null

另外,对于字段定义为not null,查询的时候也可能返回null。
例如,
当记录不存在时,查询结果为空:

> select   cluster_name   from  orange      where hostname='123';
Empty set (0.00 sec)

对于查询结果为空,如果使用max()函数,返回值不再是空,字符值为null。

>select       max(cluster_name)     from  orange     where name='123';
+-------------------+
| max(cluster_name) |
+-------------------+
| NULL              |
+-------------------+
1 row in set (0.00 sec)

建议

  • 尽量不要用null作为默认值。null作为默认值的字段,如果作为索引,会影响效率。
  • 如果确认该字段不会用作索引,也不怕影响效率,可以直接忽略上面一条。

参考

mysql 空值(null)和空字符(‘’)的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值