SQL Server语言 - 案例 FN(str) 当 x 然后 y ELSE 保持原始值而不重复函数



我想知道 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

您可以将applyvalues一起使用:

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

最新更新