从某一点重新标记字符串的一部分

时间:2015-11-15 23:35:07

标签: mysql sql

我在表中的120条记录中发现了一些错误的文本,所以我在varchar字段中: '名字垃圾垃圾2更垃圾' 我想保留'Name'并删除姓名之后的所有内容 我试过这个:

SELECT  REPLACE(field_name, 'rubbish','') as test
from table
where field_name like '%rubbish%'

但是,这将只消除“垃圾”,而不是其余的。 我认为必须是一种方法来删除5位数后的所有内容!? TXS

2 个答案:

答案 0 :(得分:1)

删除第一个空格字符后的所有内容:

update mytable set
field_name = substr(field_name, 1, instr(field_name, ' '))
where field_name like '%rubbish%';

请参阅SQLFiddle

答案 1 :(得分:1)

在MySQL中,如果你想在第一个空格之前保留所有内容,那么你可以使用substring_index()

update t
    set col = substring_index(col, ' ', 1)
    where col like '% %';

如果您有一些设置模式,例如字符串'rubbish',那么您可以使用它。因此,这样可以保留所有内容"垃圾":

update t
    set col = substring_index(col, 'rubbish', 1)
    where col like '%rubbish%';

您也可以在SELECT声明中使用此逻辑:

select substring_index(col, 'rubbish', 1)
. . . 

如果字符串不包含"垃圾",则返回所有内容。