2016-05-10 56 views
1

我去更新一個表(假設表名是在SQL Server Venues有條件即
如果一列(比如列名Venue_Name)在Venues包含很多子字符串,則「C_」 集中的一列(說列名是Venue_Type)在Venues = Conference的SQL Server表列的條件更新

我已經試過此查詢爲:

IF Venue_Name CONTAINS 'C_' 
    UPDATE Venues SET Venue_Type = 'Conference' 
ELSE IF Venue_Name CONTAINS 'J_' 
    UPDATE Venues SET Venue_Type = 'Journal' 
ELSE 
    UPDATE Venues SET Venue_Type = 'Other' 

但在使用關鍵字發現錯誤。

請在這方面提供幫助。

回答

2

你需要的是一個CASE表達:

UPDATE Venues 
    SET Venue_Type = CASE 
         WHEN Venue_Name LIKE '%C[_]%' THEN 'Conference' 
         WHEN Venue_Name LIKE '%J[_]%' THEN 'Journal' 
         ELSE 'Other' 
        END 
+1

非常感謝您! – maliks

+1

我想你忘了使用ESCAPE字符,下劃線將作爲LIKE中任何字符的通配符。它應該看起來像這樣:'Venue_Name LIKE'%C#_%'ESCAPE'#'' – CeOnSql

+1

@CeOnSql,謝謝! –