2017-02-08 9 views
0

列のすべてのフィールドを更新したいが、多くの文字列には希望する文字列があるが、この文字列をインスタンス:MySQL:最初の文字列以外の文字列を置換する

へ "のMyString otherstringは文字列MyString AnotherString AndAnotherのMyString"

は、 "文字列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','') 
    ) 

これは2、へと「文字列MyString」の最初の出現を含めて最大最初の部分、および第二の部分にフィールドを分割することである何それ以降のすべてのものを置き換えます。

+0

お時間をいただきありがとうございます!よく働く ! –

+0

喜び! 。 。 。 –

関連する問題