我有一个返回16列的查询。其中12个具有相似的数据(它们返回值0,1或2)。我想用字母替换这些数字 - 0表示L,1表示M,2表示H。
我可以写出12个案例陈述,但这样做太过分了,我绝对不想这样做。我宁愿在前端转换这些值。有没有办法使用类似函数(仅在查询本身内)返回适当的值?
请注意,我只读取了对数据库的访问权限,并且已经存在数千个这样的数据库,因此无法创建udf。
答案 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
....