oracle之关于字段中含有空格的处理
select length(sfz),sfz from dw_2; 8 292882 6 281001 7 27278 1 18 320122198701xxx 6 9210k SELECT * FROM dw_2 WHERE REGEXP_LIKE(sfz, '( )+'); --包含了所有含有空格的列 SELECT * FROM dw_2 WHERE length(sfz) > length(trim(sfz)); --没有检索出中间含有空格的列 SELECT * FROM dw_2 WHERE substr(sfz,-1)=' '; --只检索出字段尾有空格的列 SELECT INSTR(sfz,' ', 1, 1),sfz FROM dw_2 WHERE REGEXP_LIKE(sfz, '( )+'); --检索出出现空格所在的字符串位置 SELECT INSTR(sfz,' ', 1, 1),sfz,substr(sfz,0,INSTR(sfz,' ', 1, 1)) FROM dw_2 WHERE REGEXP_LIKE(sfz, '( )+'); SELECT INSTR(sfz,' ', 1, 1),sfz,substr(sfz,0,INSTR(sfz,' ', 1, 1)),substr(sfz,INSTR(sfz,' ', 1, 1)+1,100) FROM dw_2 WHERE REGEXP_LIKE(sfz, '( )+');
在工作中遇到了一些字符串中含有空格的处理小结,望自己能时常记住!
Not in 对null敏感,这意味着not in后面的子查询里一旦有null值时则整个sql执行结果就会为null,此时可在not in 后面子句中加上对应字段 is not null,或者用not exists来查询