2016-05-10 54 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,谢谢! –