2016-06-13 64 views
-1

我正在嘗試創建If Else更新腳本。這是我已經放在一起迄今爲止:If Else Update Script

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. 您使用like操作者不使用任何通配符

  3. 你在兩個語句邏輯具有一些重疊,由於相反的(A或B)實際上是(非A和非B)

這裏是你如何解決所有三個問題:

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%'