【问题标题】:Conditional update of SQL Server table columnSQL Server 表列的条件更新
【发布时间】: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 时发现错误。

【问题讨论】:

    标签: sql-server sql-update substring conditional 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 '#'
    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2022-11-10
    • 2013-05-04
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多