这两天在处理字符串里面的空值时,碰到一个问题,比如
select replace('abc dfe hij',' ','_') 这个完全是手动录入的执行是绝对会替换成功的,
但是我现在需要处理的是动态数据,处理table表里面列1里面的多个空值,试了很多方法都没有生效(上面手动录入的内容就是从列1里面复制出来的)
select replace(列1,' ','_') from table
直到看到一位大神的帖子才恍然大悟,处理过程如下:
1.先取出其中一个空值看一下长度,执行下面的语句发现返回不是0而是1,说明c和d之间其实是有看不见字符的
select len(substring('abc dfe hij',4,1))
2.然后将截取的字符用ASCLL看一下返回是13
select ascll(substring('abc dfe hij',4,1)) 执行此语法返回的是13
百度了一下发现char(13)对应的是回车键
3.重新修改语句,字符串里面包含的空值此时全部都替换成‘_’了
select replace(列1,char(13),'_') from table