您可以使用TRIM:
UPDATE table_name SET column = TRIM(LEADING 'some string' FROM column);
假设“某些字符串”在“列”内容的开头连续出现不超过 1 次。
因此,如果列包含以下内容,它将起作用:
"some string foo some string"
但不适用于:
"some string some string foo some string"
编辑 - 添加 MySQL 功能以简化流程
我看不到您正在使用的机制的替代方案,但可以通过在 MySQL 中创建一个函数来简化执行它(如果您有特权):
delimiter $$
create function replace_first(
p_text_to_search varchar(255),
p_text_to_replace varchar(255)
)
returns varchar(255)
begin
declare v_found_pos int(11);
declare v_found_len int(11);
declare v_text_with_replacement varchar(255);
select locate(p_text_to_replace, p_text_to_search)
into v_found_pos;
select char_length(p_text_to_replace)
into v_found_len;
select concat(
left(p_text_to_search, v_found_pos-1),
mid(p_text_to_search, (v_found_pos + v_found_len))
)
into v_text_with_replacement;
return v_text_with_replacement;
end$$
delimiter ;
那么您可以使用以下方法调用它:
select replace_first('bar foo foo baz foo', 'foo');
结果:
'bar foo baz'