2016-06-13 6 views
-1

If Else Update Scriptを作成しようとしています。私は私が間違っているのは何Else更新スクリプト

IF (SELECT [FileType1] FROM Document 
       WHERE ([FileType1] like 'E-mail' or [FileType1] like 'outlook')) 
    UPDATE Document 
    SET [FilePath]='' 
ELSE ((SELECT [FileType1] FROM Document 
       WHERE ([FileType1] not like 'E-mail' or [FileType1] not like 'outlook')) 
    UPDATE Document 
    SET [Path]='' 

:これは私がこれまでに一緒に入れている何ですか?

+1

を使用しているデータベースエンジンを指定したタグを追加してください。 – trincot

+0

私はSQL Server 2008 R2を使用しています。 – Jeff

答えて

2

caseの式を使用してこれを行うことができます。値が正確である場合は、likeの代わりに=を使用して値を比較してください。

update Document 
set [FilePath]= case when [FileType1] like 'E-mail' or [FileType1] like 'outlook' then '' 
       else [FilePath] end 
,[Path] = case when [FileType1] not like 'E-mail' or [FileType1] not like 'outlook' then '' 
       else [Path] end 
2

あなたの現在のロジックを持ついくつかの問題があります。

  1. は条件付き構造が正しくありません - あなたは、あなたの問題は、現在で信じるものです。条件ロジックを組み込んだ2つのアップデートが必要になります。

  2. の反対ので、二つの文で

  3. あなたのロジックは、いくつかのオーバーラップを有する任意のワイルドカードを使用しないlikeオペレータのご利用(AまたはB)は、実際に(ないA及びBではない)でありますここで

あなたはすべての3つの問題に対処する方法です。

UPDATE Document 
SET [FilePath] = '' 
WHERE [FileType1] like '%E-mail%' or [FileType1] like '%outlook%' 

UPDATE Document 
SET [Path] = '' 
WHERE [FileType1] not like '%E-mail%' and [FileType1] not like '%outlook%' 
関連する問題