SQL Server 表列的条件更新
Posted
技术标签:
【中文标题】SQL Server 表列的条件更新【英文标题】:Conditional update of SQL Server table column 【发布时间】:2016-09-04 22:39:09 【问题描述】:我必须有条件地更新一个表(比如 SQL Server 中的表名是Venues
,即如果Venues
中的一列(比如列名是Venue_Name
)包含子字符串'C_',然后设置一列(在Venues
= Conference
中说列名是Venue_Type
)。
我试过这个查询:
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'
但在使用关键字CONTAINS
时发现错误。
【问题讨论】:
【参考方案1】:你需要的是一个CASE
表达式:
UPDATE Venues
SET Venue_Type = CASE
WHEN Venue_Name LIKE '%C[_]%' THEN 'Conference'
WHEN Venue_Name LIKE '%J[_]%' THEN 'Journal'
ELSE 'Other'
END
【讨论】:
我想你忘了使用 ESCAPE 字符,下划线将用作 LIKE 中任何字符的通配符。例如,它应该如下所示:Venue_Name LIKE '%C#_%' ESCAPE '#'
以上是关于SQL Server 表列的条件更新的主要内容,如果未能解决你的问题,请参考以下文章