SQL server 特殊字符"\u0000"处理

某天,接到用户反馈点击某个项目分组的时候页面报错,点击其他项目不报错。

初步以为是下标数字特殊符号导致的。通过前台输出对应的数值后发现该字段末尾有个“\u0000”特殊字符(ASCII字符char(0))。通常是导入数据时的格式问题或是程序处理时将页面中的换行字符保存数据库导致的。

像SQL server的SSMS中一般是不显示该字符的。通过DataGrip工具查询该字段,发现有这种特殊字符(需要将光标移动至该字段中)。

 因此需要在数据库中将该表字段中包含此字符的都要查询出来进行处理掉。

但是查询该特殊符号,不能简单的用 like '%nul%'或者直接将该段复制出来进行模糊查询。需要进行特殊的字符编码进行转义查询。

select * from tablename where columnname COLLATE Latin1_General_BIN LIKE '%' + CHAR(0) + '%'

最后通过replace函数进行替换掉。

update tableName set columnName = replace( columnName COLLATE Latin1_General_BIN , char(0) , '') where xxxx=xxx

注意:需要将 COLLATE Latin1_General_BIN 放到要替换的字段名称后面。

参考链接 https://www.cnblogs.com/BinBinGo/p/11892154.html