我在表中的120条记录中发现了一些错误的文本,所以我在varchar字段中: '名字垃圾垃圾2更垃圾' 我想保留'Name'并删除姓名之后的所有内容 我试过这个:
SELECT REPLACE(field_name, 'rubbish','') as test
from table
where field_name like '%rubbish%'
但是,这将只消除“垃圾”,而不是其余的。 我认为必须是一种方法来删除5位数后的所有内容!? TXS
答案 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)
. . .
如果字符串不包含"垃圾",则返回所有内容。