MySQL中剔除某字符串后面的所有内容

在使用MySQL进行数据清洗的过程中,有时候需要剔除掉某一字段中多余的部分,例如剔除掉123456_1_2中的“_1_2” 、 xioazhu ps:123中的“ps”后的内容、 去重zxc [123]中“[”后边的全部内容 。这个时候,只需要使用SUBSTRLOCATE组合就可以完成数据清洗。


去除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