mysql 空字符串的坑

mysql 空字符串的坑

经常遇到,记录一下。

一、问题描述

因为应用写得有问题,某些本应为null值的字段insert了空字符串‘’。

这种字段在navicat中看起来是一片空白,什么都没有,和null差不多。但是通过where is null是找不到该行记录的,相当烦人。

顺带一提,如果使用navicat等数据库管理软件,只是进行ui操作是删不掉空白字符串的,需要执行sql。

二、解决方案

1.解决程序的问题

找到相关的sql语句,溯源到相关代码,解决空字符问题。并且修复已有数据。

最后记得把写问题代码的人干掉,从而达到根治的效果。

2.无法解决程序问题

很多时候入口代码不归你负责,但是你要负责处理这堆数据。这就代表你无法从源头解决问题,只能想办法补救搜索条件。

最直观的写法:

这种写法看起来挺丑的,使用IFNULL处理一下:

如果column_name为null,那么IFNULL会将其处理成‘’。如果column_name本身就是‘’,那么条件依然成立,确保能查出此条数据。

三、总结

主要从源头解决问题,写sql时注意下参数即可。

发布者

xie4ever

发表评论

电子邮件地址不会被公开。