SQL WHERE过滤条件中使用""匹配到的是什么值?
SQL空值匹配问题解答
WHERE usertype = "" 匹配到的是长度为0的空字符串(Empty String),属于明确存在的字符串类型取值,和你之前排查的几类易混淆空值有本质区别:
- 它不是
NULL值:NULL在SQL中代表字段值完全缺失、未做定义,只能通过IS NULL/IS NOT NULL判断,无法通过等值运算匹配,和你第一次统计得到NULL计数为0的结果完全一致。 - 它不是包含空格的字符串:你之前测试的
WHERE usertype = " "匹配的是长度为1、内容为单个半角空格的字符串,和无任何字符的零长度空字符串是完全不同的取值,因此匹配不到对应数据。 - 空字符串是合法的字符串类存储值,只是内容长度为0、不包含任何可见/不可见字符,因此可以通过等值比较
= ""精准命中你统计到的5828994行异常记录。
清洗提示:后续做枚举字段schema校验时,建议把空字符串、全空白填充字符串都纳入异常值统计范围,可通过
WHERE LENGTH(TRIM(usertype)) = 0一次性匹配所有无实际意义的空白类取值,避免漏判。
内容的提问来源于stack exchange,提问作者NorMan
相关产品推荐
相关产品推荐

