快下班了 紧急提问

Kingofcode 2012-03-20 06:00:11
我的表里有一列为数字 1,2,3,4 等 请问如何快速的将数字换成对应顺序的字母 例如 1→A 2→B 3→C等
谢谢先
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰镇宝贝321 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawugui 的回复:]
如果只有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……
[/Quote]

我觉得这个方法是可行的。。。
dawugui 2012-03-20
  • 打赏
  • 举报
回复
如果只有1-4,使用case when

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



也可以使用ascii,char来进行转换.
create table tb(col int)
insert into tb values(1)
insert into tb values(2)
insert into tb values(3)
insert into tb values(4)
insert into tb values(5)
insert into tb values(6)
insert into tb values(7)
insert into tb values(8)
insert into tb values(9)

select col_cnt = col, col_char = char(ascii(ltrim(col)) + 16) from tb

drop table tb

/*
col_cnt col_char
----------- --------
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I

(所影响的行数为 9 行)
*/


guguda2008 2012-03-20
  • 打赏
  • 举报
回复
帮你把两边的逗号去年,自己封装个函数调就可以了,实际用过这种方法,效率比循环高。
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
guguda2008 2012-03-20
  • 打赏
  • 举报
回复
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,

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧