你可以使用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'
我已经更新了我的答案 - 没有完全不同,但它可能有帮助。 – Raad 2013-02-27 13:08:08