我想知道 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
您可以将apply
与values
一起使用:
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);