2017-02-08 16 views
0

Я хочу обновить все поля столбца, у многих из них есть нужная строка, но я хочу, чтобы эта строка была только в каждом поле один раз, для экземпляр: "MyString OtherString MyString AnotherString AndAnother MyString"MySQL: заменить появление строки в поле, кроме первого

к

"MyString OtherString AnotherString AndAnother"

бы ты ни малейшего представления о том, как достичь этого?

+0

Теперь добавлено лучшее решение для вас, которое будет иметь дело с экземплярами, когда «MyString» не является первым термином в поле. Я надеюсь тебе понравится! –

ответ

0

Если «MyString» всегда будет иметь место как первый член в этой области, это будет работать:

update MyTable set MyField = replace(MyField, ' MyString','') 

Ключевым моментом выше является то, что мы ищем вхождения «MyString» с ведущим пространством, так первое вхождение в начале поля будет проигнорировано.

Однако, я думаю, это может быть слишком хрупким - что, если первое появление «MyString» не находится в начале поля?

в этом последнем случае вам необходимо следующее:

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
     LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
     REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    ) 

Что это делает, чтобы разделить поле на два, первая часть, вплоть до первого вхождения «MyString», а вторая часть заменяя все дальнейшие его появления.

+0

большое спасибо за ваше время! Прекрасно работает ! –

+0

Удовольствие! , , , –