1

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

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

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

4

2 回答 2

1

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

于 2012-10-11T21:01:21.747 回答
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
        ....
于 2012-10-11T21:07:18.267 回答