有一个表,只有字段KK,是VARCHAR类型,里面的数据是:AA1,AA3,BA3,CD8,CD1,CA3......前面两个是字母,第三个是数字。
如何把AA1转化成111,BC3转化成233?我的意思就是,把A转化成1,B转化成2......?
如何把AA1转化成111,BC3转化成233?我的意思就是,把A转化成1,B转化成2......?
解决方案 »
- 大家新年好!请教一个关于连续时间查询问题?
- SQL的安全性问题。
- 更改多表相同字段的 default value , 在线等待 ,急
- 模糊检索的疑问?
- 求助,将已获取的记录集合存入表变量(注:Select语句带Order by)
- update LTContent set LastReplyTime = CAST('2003-9-18 9:54:33' AS datetime),LastReplyUserID = 6,LastReplyUserName = 'test' where
- 数据库的连接?
- sa是什么东西?
- 新手问题
- informix问题,紧急求救
- 急急急急急急急急急急急急急急急急!!!
- 在线等待,关于存储过程、自定义函数方面的问题!
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')
goupdate 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
replace(replace(kk,'A','1'),'B','2') as kk -- 需要的话继续套,呵呵
from tab
(
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
其实我想要的就是你这样的方法,不过可惜我早就结账了,还是多谢你了!