1.情景展示
筛选出指定字段字符长度既不等于18也不等于15的数据。
2.原因分析
第一步:按字符串度进行分组统计;
第二步:筛选数据。
你会发现,只将length=17统计了出来,长度不存在的数据没有统计出来。
3.解决方案
统计长度为0的数据,统计结果为0;
因为id_card字段为空的行记录,调用length()后,返回的结果也是null。
所以,只能用is null 来实现。
所以,最终结果为:
--对id_card字段长度既不等于18又不等于15的数据进行统计 SELECT SUM(AAA) FROM (SELECT COUNT(1) AAA FROM VIRTUAL_CARD WHERE LENGTH(ID_CARD) <> 18 AND LENGTH(ID_CARD) <> 15 UNION ALL SELECT COUNT(1) AAA FROM VIRTUAL_CARD WHERE LENGTH(ID_CARD) IS NULL)