2016-06-13 17 views
0

Ich versuche, ein If Else Update Script zu erstellen. Das habe ich bisher zusammengefügt:SQL - Wenn Else Update Script-Anweisung

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] 

Was mache ich falsch? Grundsätzlich, wenn E-Mail oder Outlook in einer Anweisung gefunden wird, möchte ich die Dateipfad Spalte die vollständige Pfadspalte entsprechen.

Wenn keine E-Mails gefunden werden, möchte ich die Pfad Spalte der vollständigen Pfadspalte entsprechen.

+0

Mögliche Duplikate von [mit einer bedingten Update-Anweisung in SQL] (http://StackOverflow.com/Questions/6097815/using-a-conditional-update-statement-in-sql) –

+0

nicht sicher, warum Sie 'IF brauchen ELSE hier; Was verhindert, dass Sie Bedingungen schreiben auf 'UPDATE' – techspider

Antwort

2

Sie können dies tun mit einer CASE Anweisung, während die ELSE Bedingung selbst säumigen:

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 

Ich habe auch die LIKE Aussagen entfernt (da Sie nur, um sie für die Gleichstellung mit), und entfernt die OR Aussagen bevorzugt von IN und NOT IN.

2

Alternativ können Sie Siyual Vorschlag nur [iif] verwenden, die relativ neu ist, das heißt eingeführt mit 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; 

hofft, dass diese Hilfe vereinfachen und verkürzen.

+0

IIF in SQL? Ich war ein bisschen überrascht, aber dann habe ich hier gelesen: https://msdn.microsoft.com/en-AU/library/hh213574.aspx?f=255&MSPPError=-2147217396 –