2010-12-14 9 views
0

テーブル(Tab1)に文字列(Col1)があります。文字列値から'%'または '&'文字を削除するスクリプトを作成したいと思います。SQL更新列を2回

このための選択は以下の通りです:

SELECT REPLACE(Tab1.Col1, '&', ''), 
     REPLACE(Tab1.Col1, '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
     OR Tab1.Col1 like '%[%]%' 

これは正しいように見えるのか?それはどのように私は任意の更新ステートメントに変換するだろうか?私は、次のことを試してみました:

UPDATE Tab1 
SET Tab1.Col1 = REPLACE(Tab1.Col1, '&', ''), 
    Tab1.Col1 = REPLACE (Tab1.Col1, '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
     OR Tab1.Col1 like '%[%]%' 

あなたはSETで二回列を更新カント、これは動作しません。 これを行う方法は他にありますか?私はおそらくここで愚かな何かをしていることを知っているので、私の無知のために謝ります。

ありがとうございます。

答えて

5

これは動作するはずです。 Replaceは、もう一度別の置換関数に渡すことができる文字列を返します。

UPDATE Tab1 
    SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
    FROM Table1 Tab1 
    WHERE Tab1.Col1 like '%[&]%' OR Tab1.Col1 like '%[%]%' 
1
UPDATE Tab1 
SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
    OR Tab1.Col1 like '%[%]%' 
0

あなたが使用しているRDBMS何を言っていないので、私は明らかに非ポータブルで物事を避けています:

UPDATE Tab1 
SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
WHERE Tab1.Col1 <> REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', ''); 
+0

「私は明らかに非されている事を避けています-portable " - ermの場合、標準SQLは'!= 'ではなく' <> 'を使用します。 – onedaywhen

+0

@onedaywhen 'SQL Standard' <> 'Portable'しかしあなたは[right]です(http://stackoverflow.com/questions/723195/should-i-use-or-for-not-equal-in-tsql/723426)。 #723426):) –

関連する問題