【发布时间】:2020-02-14 14:27:15
【问题描述】:
如何使用多个 CASE 更新表中的行?我一直在尝试以不同的方式编写脚本,但我确信语法是错误的。知道错误在哪里吗?
UPDATE NameToSplit
SET Aliases = CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 4 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 5, 0, '-')END;
CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 5 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 6, 0, '-')END;
CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 6 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 7, 0, '-')END;
CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 7 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 8, 0, '-')END;
CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 8 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 9, 0, '-')END;
CASE LEN(Alias)
WHEN CHARINDEX('.', Alias) + 9 THEN Alias
ELSE STUFF(Alias, CHARINDEX('.', Alias) + 10, 0, '-')END;
结果必须是这样的:
Names Alias Aliases
-------------------------------------------------------------------------
idealink.core.usergroup core.usergroup core.user-group
idealink.core.userloginhistory core.userloginhistory core.user-loginhistory
idealink.core.challengecategories core.challengecategories core.challenge-categories
idealink.core.activitydetails core.activitydetails core.activity-details
(core.) 之后的单词长度不同,这就是为什么我需要创建不同的案例来获取所有这些。
【问题讨论】:
-
您要更新的内容添加一些示例数据和所需的结果。
标签: sql-server sql-update case