我有一个返回 16 列的查询。其中 12 个具有相似的数据(它们返回值 0、1 或 2)。我想用字母替换这些数字 - 用 L 替换 0,用 M 替换 1,用 H 替换 2。
我可以写 12 个案例陈述,但那将是矫枉过正,我绝对不想这样做。我宁愿在前端转换这些值。有没有办法使用返回适当值的函数(仅在查询本身内)?
请注意,我对数据库具有只读访问权限,并且已经有数千个这样的数据库,因此无法创建 udf。
我有一个返回 16 列的查询。其中 12 个具有相似的数据(它们返回值 0、1 或 2)。我想用字母替换这些数字 - 用 L 替换 0,用 M 替换 1,用 H 替换 2。
我可以写 12 个案例陈述,但那将是矫枉过正,我绝对不想这样做。我宁愿在前端转换这些值。有没有办法使用返回适当值的函数(仅在查询本身内)?
请注意,我对数据库具有只读访问权限,并且已经有数千个这样的数据库,因此无法创建 udf。
在你的前端,使用枚举怎么样?您可以让枚举元素 L=0、M=1、H=2。当您从数据库中提取(列)数据时,将其转换为枚举类型。当你显示它时,你可以通过执行 ToString 来获取枚举名称。
看看这篇 MSDN 文章。
如果您只有读取权限,则无法创建函数,但可以创建公用表表达式并加入十二次...
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
....