LIKE を使用する次のクエリでは、必要な結果が得られません。WHERE 句を使用できますか?
UPDATE TABLE
SET ALPHA = 'ABC'
WHERE ALPHA LIKE 'ABC%'
UPDATE TABLE
SET ALPHA = 'ABCCC'
WHERE ALPHA LIKE ‘ABCC%'
Bt90Abc Abc
bt91Abc Abc
bt19abcCC ABCCC
bt16abcSTAT ABC
LIKE を使用する次のクエリでは、必要な結果が得られません。WHERE 句を使用できますか?
UPDATE TABLE
SET ALPHA = 'ABC'
WHERE ALPHA LIKE 'ABC%'
UPDATE TABLE
SET ALPHA = 'ABCCC'
WHERE ALPHA LIKE ‘ABCC%'
Bt90Abc Abc
bt91Abc Abc
bt19abcCC ABCCC
bt16abcSTAT ABC
CASE
ステートメントを使用して更新を実行できます。
update yourtable
set alpha = case
when alpha like '%abcc%' then 'ABCC'
when alpha like '%abc%' then 'ABC'
else alpha
end
where alpha like '%abc%';
SQL Fiddle with Demoを参照してください。
これにより、 の条件に一致するすべての行がLIKE
値で更新されます。そうでない場合、alpha
値は更新されません。
ざっと見たところ、ここには 2 つの顕著な問題があるように見えます。
-文字列比較では大文字と小文字が区別され、小文字が含まれている可能性があるときに大文字を検索しています。where句で列の周りにUPPERを投げてみてください。
-次に、ABC で始まらない ABC の文字列を検索しているようです。この条件では、where 句として「%ABC%」を使用する必要があります。
より良い情報を得るには、問題に関する詳細情報を提供する必要があります。
あなたのコメントを読むことから:
UPDATE TABLE
SET ALPHA = CASE WHEN ALPHA IN ('bt90abc','bt91abc') THEN 'ABC'
WHEN ALPHA IN ('bt19abc') THEN 'ABCCC'
ELSE ALPHA END
WHERE ALPHA IN ('bt90abc','bt91abc','bt19abc')