所以在很多编程语言中,输入Map都是这样的。
function mapping(input) {
var map = {
"case1" : "output1"
"case2" : "output2"
"case3" : "output3"
}
return map[input] || "output4"
}
这基本上可以替换一堆if/thens,如:
var output;
If (input == "case1") {
output = "output1"
} else f (input == "case2") {
output = "output2"
} else f (input == "case3") {
output = "output3"
} else {
output = "output4"
}
return output
我的问题是。。。在SQLServer中有没有一种方法来替换case语句中的一堆when/thens?所以如果这是我的代码(实际上我有更多的案例)
SET someTable.SomeValue = (CASE
WHEN Name = 'case1' THEN
'output1'
WHEN Name = 'case2' THEN
'output2'
WHEN Name = 'case3' THEN
'output3'
WHEN Name = 'case4' THEN
"output4"
END) FROM TableName
有没有更简洁的方法?i、 输入Map或类似的替代品?
1条答案
按热度按时间lztngnrs1#
最直接的方法是创建一个临时表,其中所需的键作为一列,匹配的值作为第二行。然后您可以简单地加入到该表中。不需要案例陈述。
给定以下ddl:
如果要动态执行此操作(例如使用公共表表达式),请按以下步骤进行:
看到这把小提琴的示范了吗
在t-sql中,最接近key-value对象的是json,因此可以使用jason值创建一个临时表并对其进行解析,尽管还不清楚它是如何改进基本临时表的。
在这一页的底部有一些关于它如何工作的细节。