0

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
4

3 に答える 3

1

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値は更新されません。

于 2013-03-05T16:23:04.417 に答える
0

ざっと見たところ、ここには 2 つの顕著な問題があるように見えます。

-文字列比較では大文字と小文字が区別され、小文字が含まれている可能性があるときに大文字を検索しています。where句で列の周りにUPPERを投げてみてください。

-次に、ABC で始まらない ABC の文字列を検索しているようです。この条件では、where 句として「%ABC%」を使用する必要があります。

より良い情報を得るには、問題に関する詳細情報を提供する必要があります。

于 2013-03-05T16:20:26.200 に答える
0

あなたのコメントを読むことから:

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')
于 2013-03-05T16:20:58.237 に答える