我想知道case语句中是否存在一个变量,可以用来引用传入的值。
例如,如果您有一个这样的表:
Department
shipping
receiving
hr
并希望得到以下输出:
Shipping
Receiving
HR
下面的查询就是这样做的:
DECLARE @table TABLE (dept VARCHAR(25))
INSERT INTO @table VALUES ('shipping'), ('receiving'), ('hr')
SELECT
CASE UPPER(SUBSTRING(dept, 1, 1)) + LOWER(SUBSTRING(dept, 2, LEN(dept) - 1))
WHEN 'Hr' THEN 'HR'
ELSE UPPER(SUBSTRING(dept, 1, 1)) + LOWER(SUBSTRING(dept, 2, LEN(dept) - 1))
END
FROM @table
有没有一种方法可以做到这一点而不重复else语句中的所有函数?在ELSE中,我只想让它返回我传递给case语句的原始值。我正在寻找原始值的一些内置变量,概念上是这样的:
ELSE ORIGINAL_VALUE
发布于 2018-08-08 16:32:39
您可以在values
中使用apply
:
SELECT t.*, (CASE WHEN ORIGINAL_VALUE = 'Hr' THEN 'HR' ELSE ORIGINAL_VALUE
END)
FROM @table t CROSS APPLY
( VALUES (UPPER(SUBSTRING(dept, 1, 1)) + LOWER(SUBSTRING(dept, 2, LEN(dept) - 1)))
) tt(ORIGINAL_VALUE);
https://stackoverflow.com/questions/51751508
复制