数据清洗之如何去除字符串中的类空格字符

以下是我去除类空格字符的心路历程!!实际解决方案跳过虚线段落

-------------------------------------------------------------------------------------------------------------------------------

replace函数可以去除或替换整个字符串里的数据,包括字符串中间的数据。

update table_name t set t.colum_name=replace(t.colum_name,' ','')

trim函数可以去除开头或结尾的空格

string trim    ( string $str   [, string $charlist  ] ) 第二个参数可以指定要trim掉的字符

如果不指定第二个参数,trim() 将去除这些字符:

" " (ASCII32(0x20)),普通空格符。

"\t" (ASCII9(0x09)),制表符。

"\n" (ASCII10(0x0A)),换行符。

"\r" (ASCII13(0x0D)),回车符。

"\0" (ASCII00x00)),空字节符。

"\x0B" (ASCII11(0x0B)),垂直制表符。

–去掉左边空格
update table_name set colum_name=ltrim(colum_name);
–去掉右边空格
update table_name set colum_name=rtrim(colum_name);
–去掉两边空格
update table_name set colum_name=trim(colum_name);

但是用了trim函数之后还是无法清理掉字符串中的空格,是因为trim()函数只能消除半角空格,而不能消除全角空格。全角空格可以replace函数转化成半角空格之后在用trim去除。但是最后我发现数据库中的类空格并不是全角空格!崩了!

---------------------------------------------------------------------------------------------------------------------------------事实上,数据库的类空格字符可能是很多字符,除了trim函数能去除的字符外,还有全角空格(ascii:227)和一些控制字符,乱码字符等等。全角空格这种情况是比较多的情况。

但是最好的解决方法不是去猜是什么字符。

两个步骤:

1、求出类空格键的ASCII码值:ascii(substr(column_name,n,m)); n为类空格键的起始位置;m为长度。整个字符串的长度可以用length()获取 。

2、SELECT replace(column_name, chr(求得的ASCII码值) ) from table_name 

SQL
select ascii(substr(column_name,0,12)) from table_name 

select replace(column_name,chr(9)) from table_name 

update table_name  t  set t.column_name=replace(column_name,chr(9))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值