SQL Server数据库中批量处理特殊字符原创
金蝶云社区-emily
emily
7人赞赏了该文章 3,736次浏览 未经作者许可,禁止转载编辑于2021年11月21日 11:39:28

1、确认特殊字符的ASCII码是多少

--例如下面字符串中分别在1、3、5位置存在特殊字符“问号”和“方框”,因为某些特殊字符是复制不出来的,例如这里的方框,所以首先使用substring函数,可以查到特殊字符的位置,然后再使用ASCII函数,获得特殊字符的ASCII码
select fid,test,substring(test,1,1) "1_loc",substring(test,3,1) "3_loc",substring(test,5,1) "5_loc",ASCII(substring(test,1,1)) "1_ASCII码",ASCII(substring(test,3,1)) "3_ASCII码",ASCII(substring(test,5,1)) "5_ASCII码"
from test  
where fid=1

图片.png

2、批量查询出有此特殊字符的数据都有哪些

--使用char(ASCII码的值),可以将ASCII码转换为字符,利用这点,可以快速查询到异常的数据都有哪些
select * 
from test 
where charindex(char(63),test)>0 or charindex(char(1),test)>0

图片.png

3、批量替换特殊字符为指定的值

--使用REPLACE函数批量替换掉特殊字符,例如此处,需要将问号替换成“-”,将最后面的方框直接删除

select REPLACE(test,char(63),'-'),*
--update a set test=REPLACE(test,char(63),'-')
from test a
where charindex(char(63),test)>0 


select REPLACE(test,char(1),''),*
--update a set test=REPLACE(test,char(1),'')
from test a
where charindex(char(1),test)>0

图片.png

执行完update语句后再来查询,可以看到已经替换成了想要的结果,且注意这个是替换字符串中所有能匹配到的特殊字符,并不是只替换第一个匹配到的字符。

图片.png

赞 7