SQL更新案例返回(受影响的0行),不应

SQL更新案例返回(受影响的0行),不应,sql,sql-server,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

我正在尝试运行这样的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个受影响的行。但当我检查它们的值时,不应该这样做。

删除[],并在中使用单独的字符串

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

WHERE Deleted = 0 AND Name IN ('[name1,name2,name3]')
这正好匹配一个字符串…'[name1,name2,name3]'

如果要匹配不同的值,则需要:

WHERE Deleted = 0 AND Name IN ('name1', 'name2', 'name3')
你可以在下面试试-

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')

是的,我试过了,得到了同样的结果:/@Charlie-answer-edited你的名字值将是separatestring@Charlie工作正常吗?是的,这就是问题所在:
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')