在使用MySQL进行数据清洗的过程中,有时候需要剔除掉某一字段中多余的部分,例如剔除掉123456_1_2中的“_1_2” 、 xioazhu ps:123中的“ps”后的内容、 去重zxc [123]中“[”后边的全部内容 。这个时候,只需要使用SUBSTR
和LOCATE
组合就可以完成数据清洗。
去除123456_1_2中的“_1_2” 具体代码如下:
update 表名 set 字段=SUBSTR(字段,1,LOCATE('_',字段)-1) where 字段 REGEXP '_';
去除 xioazhu ps:123 中的“ps”后的内容 具体代码如下:
update 表名 set 字段=SUBSTR(字段,1,LOCATE('ps:',字段)-1) where 字段 REGEXP 'ps:';
去重zxc [123]中“[”后边的全部内容 具体代码如下 :
update photos set title=SUBSTR(title,1,LOCATE('[',title)-1) where title REGEXP '\\['
注意: REGEXP 去除”[“时需要在“[”之前加入“\\”转义,否则报错#1139 – Got error ‘brackets ([ ]) not balanced’ from regexp