把字母转化成数字

test88666 2012-03-16 10:17:47
有一个表,只有字段KK,是VARCHAR类型,里面的数据是:AA1,AA3,BA3,CD8,CD1,CA3......前面两个是字母,第三个是数字。
如何把AA1转化成111,BC3转化成233?我的意思就是,把A转化成1,B转化成2......?
...全文
565 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
test88666 2012-03-23
  • 打赏
  • 举报
回复
To:magician547
其实我想要的就是你这样的方法,不过可惜我早就结账了,还是多谢你了!
孤独加百列 2012-03-16
  • 打赏
  • 举报
回复
其实不用每个字母转换一下的,可以直接求字母的ASC码然后直接减去64就可以了,A的ASC码为65,以此类推就可以了

CREATE TABLE table1
(
KK VARCHAR(10) NOT NULL
)

INSERT INTO table1
SELECT 'AB1' UNION
SELECT 'BC2' UNION
SELECT 'CD3'



SELECT CAST((UNICODE(LEFT(KK,1)) - 64) AS VARCHAR(10)) + CAST((UNICODE(SUBSTRING(KK,2,1)) - 64) AS VARCHAR(10)) + RIGHT(KK,1) AS Num
FROM Table1


结果
Num
121
232
343
AcHerat 元老 2012-03-16
  • 打赏
  • 举报
回复
拆分下字符串,然后用12345代替后重新拼接到一起。
昵称被占用了 2012-03-16
  • 打赏
  • 举报
回复
select 
replace(replace(kk,'A','1'),'B','2') as kk -- 需要的话继续套,呵呵
from tab
dawugui 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 test88666 的回复:]
每行只有AC4
[/Quote]我只写到a到d,如果不够,你自己补充完毕.
create table tb(KK VARCHAR(3))
insert into tb values('AA1')
insert into tb values('AA3')
insert into tb values('BA3')
insert into tb values('CD8')
insert into tb values('CD1')
insert into tb values('CA3')
go

update tb
set kk =
(case when substring(kk,1,1) = 'A' then '1'
when substring(kk,1,1) = 'B' then '2'
when substring(kk,1,1) = 'C' then '3'
when substring(kk,1,1) = 'D' then '4'
end) +
(case when substring(kk,2,1) = 'A' then '1'
when substring(kk,2,1) = 'B' then '2'
when substring(kk,2,1) = 'C' then '3'
when substring(kk,2,1) = 'D' then '4'
end) +
substring(kk,3,1)

select * from tb
/*
KK
----
111
113
213
348
341
313

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

drop table tb
test88666 2012-03-16
  • 打赏
  • 举报
回复
每行只有AC4
dawugui 2012-03-16
  • 打赏
  • 举报
回复
AA1,AA3,BA3,CD8,CD1,CA3........

这是一行记录的值.还是每行只有aa1或aa3...?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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