SQL UPDATE CASE返回(受影响的0行),不应返回

时间:2019-02-22 13:13:09

标签: sql sql-server

我正在尝试运行这样的SQL命令

UPDATE Category
SET SortOrder = (
        CASE 
            WHEN Category.Name = 'name1' THEN 1
            WHEN Category.Name = 'name2' THEN 2 
            WHEN Category.Name = 'name3' THEN 3 
        END
    )
WHERE Deleted = 0 AND Name IN ('[name1,name2,name3]')

但是它返回(受影响的0行)。但是,当我检查它们的值时,应该不会。

3 个答案:

答案 0 :(得分:3)

WHERE Deleted = 0 AND Name IN ('[name1,name2,name3]')

这恰好匹配一个字符串。 。 。 '[name1,name2,name3]'

如果要匹配其他值,则需要:

WHERE Deleted = 0 AND Name IN ('name1', 'name2', 'name3')

答案 1 :(得分:2)

删除[]并在in内使用单独的字符串

UPDATE Category
SET SortOrder = 
        CASE 
            WHEN Category.Name = 'name1' THEN 1
            WHEN Category.Name = 'name2' THEN 2 
            WHEN Category.Name = 'name3' THEN 3 
        END

WHERE Deleted = 0 AND Name IN ('name1','name2','name3')

名称的值将是单独的字符串

答案 2 :(得分:2)

您可以在下面尝试-

UPDATE Category
SET SortOrder = (
        CASE 
            WHEN Category.Name = 'name1' THEN 1
            WHEN Category.Name = 'name2' THEN 2 
            WHEN Category.Name = 'name3' THEN 3 
        END
    )
WHERE Deleted = 0 AND Category.Name IN ('name1','name2','name3')