日期:2014-05-18  浏览次数:20420 次

快下班了 紧急提问
我的表里有一列为数字 1,2,3,4 等 请问如何快速的将数字换成对应顺序的字母 例如 1→A 2→B 3→C等
谢谢先

------解决方案--------------------
SQL code
DECLARE @STR VARCHAR(50)
SELECT @STR='2,26,13,7,37'
SELECT 
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
','+@STR+','
,',1,',',A,'),',2,',',B,'),',3,',',C,'),',4,',',D,'),',5,',',E,'),',6,',',F,'),',7,',',G,')
,',8,',',H,'),',9,',',I,'),',10,',',J,'),',11,',',K,'),',12,',',L,'),',13,',',M,'),',14,',',N,')
,',15,',',O,'),',16,',',P,'),',17,',',Q,'),',18,',',R,'),',19,',',S,'),',20,',',T,'),',21,',',U,')
,',22,',',V,'),',23,',',W,'),',24,',',X,'),',25,',',Y,'),',26,',',Z,')
--,B,Z,M,G,37,

------解决方案--------------------
帮你把两边的逗号去年,自己封装个函数调就可以了,实际用过这种方法,效率比循环高。
SQL code
DECLARE @STR VARCHAR(50)
SELECT @STR='2,26,13,7,37'
SELECT 
LEFT(STUFF(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
','+@STR+','
,',1,',',A,'),',2,',',B,'),',3,',',C,'),',4,',',D,'),',5,',',E,'),',6,',',F,'),',7,',',G,')
,',8,',',H,'),',9,',',I,'),',10,',',J,'),',11,',',K,'),',12,',',L,'),',13,',',M,'),',14,',',N,')
,',15,',',O,'),',16,',',P,'),',17,',',Q,'),',18,',',R,'),',19,',',S,'),',20,',',T,'),',21,',',U,')
,',22,',',V,'),',23,',',W,'),',24,',',X,'),',25,',',Y,'),',26,',',Z,')
,1,1,'')
,LEN(STUFF(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
','+@STR+','
,',1,',',A,'),',2,',',B,'),',3,',',C,'),',4,',',D,'),',5,',',E,'),',6,',',F,'),',7,',',G,')
,',8,',',H,'),',9,',',I,'),',10,',',J,'),',11,',',K,'),',12,',',L,'),',13,',',M,'),',14,',',N,')
,',15,',',O,'),',16,',',P,'),',17,',',Q,'),',18,',',R,'),',19,',',S,'),',20,',',T,'),',21,',',U,')
,',22,',',V,'),',23,',',W,'),',24,',',X,'),',25,',',Y,'),',26,',',Z,')
,1,1,''))-1)
--B,Z,M,G,37

------解决方案--------------------
如果只有1-4,使用case when

SQL code
select case col  
         when 1 then 'A' 
         when 2 then 'B' 
         when 3 then 'C' 
         when 4 then 'D' 
       end
from tb

------解决方案--------------------
探讨
如果只有1-4,使用case when


SQL code

select case col
when 1 then 'A'
when 2 then 'B'
when 3 then 'C'
when 4 then 'D'
end
from tb




也可以使用as……