TRIMを使用できます:
UPDATE table_name SET column = TRIM(LEADING 'some string' FROM column);
「何らかの文字列」が「列」の内容の先頭に複数の連続した出現を持たないと仮定します。
したがって、列に次のものが含まれていれば機能します。
"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'