SQL Server数据库中批量处理特殊字符原创
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
2、批量查询出有此特殊字符的数据都有哪些
--使用char(ASCII码的值),可以将ASCII码转换为字符,利用这点,可以快速查询到异常的数据都有哪些 select * from test where charindex(char(63),test)>0 or charindex(char(1),test)>0
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
执行完update语句后再来查询,可以看到已经替换成了想要的结果,且注意这个是替换字符串中所有能匹配到的特殊字符,并不是只替换第一个匹配到的字符。
推荐阅读