2016-06-13 4 views
0

If Else Update Scriptを作成しようとしています。これは今まで私がまとめたものです:SQL - Else更新スクリプトステートメント

IF (SELECT [FileType1] 
    FROM Document 
    WHERE ([FileType1] LIKE 'E-mail' OR [FileType1] LIKE 'outlook')) 

    UPDATE Document 
    SET [FilePath] = [Full Path] 

ELSE ((SELECT [FileType1] 
     FROM Document 
     WHERE ([FileType1] NOT LIKE 'E-mail' OR [FileType1] NOT LIKE 'outlook')) 

    UPDATE Document 
    SET [Path] = [Full Path] 

私は間違っていますか?基本的に、電子メールまたはOutlookが1つのステートメントで見つかった場合は、ファイルパスの列をフルパス列と同じにします。

電子メールが見つからない場合は、のパスの列をフルパスの列にします。

+0

[条件付き更新ステートメントをsqlで使用する](http://stackoverflow.com/questions/6097815/using-a-conditional-update-statement-in-sql) –

+0

の可能な複製が可能な理由がわからない「IF ELSE'はここにあります。あなたは 'UPDATE' – techspider

答えて

2

あなたは自分自身にELSE条件を不履行ながらCASE声明でこれを行うことができます(あなたが唯一の平等のためにそれらを使用しているので)

Update Document 
Set  FilePath = Case When FileType1 In ('E-mail', 'Outlook') 
         Then [Full Path] 
         Else FilePath 
        End, 
     [Path] = Case When FileType1 Not In ('E-mail', 'Outlook') 
         Then [Full Path] 
         Else [Path] 
        End 

は私もLIKE文を削除した、および削除ORの文は、INおよびNOT INに優先します。

2

あるいは、簡素化し、SQL Serverの2012

update d 
set FilePath = iif(FileType1 in ('E-Mail', 'Outlook'), FullPath, FilePath), 
    Path = iif(FileType1 not in ('E-Mail', 'Outlook'), FullPath, Path) 
from Document d; 

ホープスこのヘルプで導入された比較的新しいSiyualの提案だけ[iif]を使用するための、すなわち短縮することができます。

+0

IIFのSQLで条件を書くことを妨げているのは何ですか?私はちょっと驚きましたが、ここで私はここで読む:https://msdn.microsoft.com/en-AU/library/hh213574.aspx?f=255&MSPPError=-2147217396 –