需求:验证某一字段的值是否存在首尾带有空格的情况
-- 测试数据:表名cc,三列a b c,b列有两个值前后有空格,有一个空值,有一个正常
insert into cc values (1,'bb','cc'),(2,' bb','cc'),(3,null,'cc'),(4,' bb ','cc');
首先看一下count函数的情况
select count(a),count(b) from cc;
发现结果分别是4,3,说明count只统计非空的值。这个问题不同数据库以及hive中可能都不一样,建议先试一下。
-- 如果值两端无空格,返回null,有空格返回1,统计的是有空格的值的个数
SELECT count(if(trim(b)=b,null,1)) as b1 from cc;
结果是3,说明把null也算进去了。
-- 只统计非空的
SELECT count(if(trim(b)=b,null,1)) as b1 from cc where b is not null;
结果是2。