T-SQL - 返回与数据库中存储的多个列不同的值

时间:2012-10-11 20:48:08

标签: tsql

我有一个返回16列的查询。其中12个具有相似的数据(它们返回值0,1或2)。我想用字母替换这些数字 - 0表示L,1表示M,2表示H。

我可以写出12个案例陈述,但这样做太过分了,我绝对不想这样做。我宁愿在前端转换这些值。有没有办法使用类似函数(仅在查询本身内)返回适当的值?

请注意,我只读取了对数据库的访问权限,并且已经存在数千个这样的数据库,因此无法创建udf。

2 个答案:

答案 0 :(得分:1)

在你的前端,如何使用枚举?你可以有枚举元素L = 0,M = 1,H = 2。从数据库中提取(列)数据时,将其转换为枚举类型。当您显示它时,您可以通过执行ToString来获取枚举名称 看看this MSDN article

答案 1 :(得分:1)

如果您只有读取权限,则无法创建函数,但您可以创建一个公用表表达式并加入它十二次...

WITH LookupTable (numval, returnletter) as (
    SELECT 0,'L' UNION SELECT 1,'M' UNION SELECT 2,'H')

select LKP1.returnletter as col1,
       LKP2.returnletter as col2
       ...
    from origtable OT
        inner join LookupTable LKP1 on ot.col1 = LKP1.numval
        inner join LookupTable LKP2 on ot.col2 = LKP2.numval
        ....