2017-02-05 9 views
0

テーブルがこのデータベース更新クエリ?

ID   Desc 
1   I am a boy 
2   I am a boy xyz 
3   I am a boy abc 
4   xyzab I am a boy 
5   life is beautiful 
6   blank 

のようなものであると仮定した行の句「私は男の子だが、」発見された時はいつでも今、私の要件は、それが削除されますされますが、それがあるとして一部の残りの部分が残ります。そのフレーズがそこになければ、変化はありません。したがって、上記の表のクエリの後には、あなたは、次の代替を試すことができ、この

ID   Desc 
1   <blank> 
2   xyz 
3   abc 
4   xyzab 
5   life is beautiful 
6   blank 

答えて

2

のようになります。置き換えられた説明列をラップして、フレーズI am a boyを削除することから残った空白を削除することに注意してください。

UPDATE yourTable 
SET Desc = TRIM(REPLACE(Desc, 'I am a boy', '')) 
WHERE Desc LIKE '%I am a boy%' 

WHERE句は、少年の文字列を含むそれらのレコードへUPDATE操作を制限します。この特定のケースでは、重複する可能性があります。しかし、一般にWHERE節を追加することで、変更が意図されていないときにレコードを変更しないようにすることで、時間を節約できます。また、一般的に(ここではないが)、WHERE節は、where列がインデックスを持つときに更新を高速化することさえできます。すべての

+1

それを私にビート。面白い考えはそこにTRIMを投げている - それは本当にOPが本当に望んでいるものなのだ。 –

+0

WHERE句は冗長です – Strawberry

+0

@Strawberry更新が反映されないレコードには触れさせたくありません。 –

0

まず予約キーワードあるので、何か他のものにDESC列名を変更することをお勧めします。お見積もりthis

次のクエリは、あなたの問題を解決する可能性があります。ここで列名をDscに変更しました。

UPDATE mytable 
SET Dsc = REPLACE(Dsc, 'I am a boy', ''); 

SQLFiddle