如何处理数据库表字段值中的特殊字符?

2020-11-20 10:25:39 浏览数 (1)

现网业务运行过程中,可能会遇到数据库表字段值包含特殊字符的场景,此场景虽然不常见,但只要一出现,其影响却往往是致命的,且排查难度较高,非常有必要了解一下。

表字段值中的特殊字符可以分为两类:可见字符、不可见字符。

可见字符处理

业务的原始数据一般是文本文件,因此,数据插入数据库表时需要按照分隔符进行分割,字段值中包含约定的分隔符、文本识别符都属于特殊字符。

常见的分隔符:, | ;

文本识别符:'' ""

这种特殊字符会导致数据错列,json无法翻译等问题,严重影响业务运行,应该提前处理掉。有人就说了,我接手的别人的数据库,不清楚是不是存在这个问题,这个咋办呢?没关系的,一条update语句就可以拯救你。

代码语言:javascript复制
-- 语法
UPDATE 
   table_name
   SET 
   column_name = REPLACE(column_name, old_text, new_text)
 WHERE 
   condition;
-- 应用样例
UPDATE 
   customer
   SET 
   email = REPLACE (email, '|', '_');

不可见字符处理

上边讲述了可见字符的处理,对于不可见字符例如:换行符LF、回车键CR,又该如何处理呢?别怕,sql支持unicode编码,把换行符、回车键对应的unicode编码转换为空就好了。

代码语言:javascript复制
UPDATE `WORKORDER` 
   SET WORKID = REPLACE(REPLACE(WORKID, CHAR(10),''), CHAR(13),'');
-- 这里使用了函数的嵌套,一条语句完成了换行符和回车键的转换,也可以转换两次。

0 人点赞