首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server - CASE FN(str) WHEN x THEN y,否则保持原始值不重复函数

SQL Server - CASE FN(str) WHEN x THEN y,否则保持原始值不重复函数
EN

Stack Overflow用户
提问于 2018-08-09 00:27:45
回答 1查看 752关注 0票数 1

我想知道case语句中是否存在一个变量,可以用来引用传入的值。

例如,如果您有一个这样的表:

代码语言:javascript
复制
Department
shipping
receiving
hr

并希望得到以下输出:

代码语言:javascript
复制
Shipping
Receiving 
HR

下面的查询就是这样做的:

代码语言:javascript
复制
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语句的原始值。我正在寻找原始值的一些内置变量,概念上是这样的:

代码语言:javascript
复制
ELSE ORIGINAL_VALUE
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-09 00:32:39

您可以在values中使用apply

代码语言:javascript
复制
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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51751508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档