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

怎样把一个文本字段里的字母和数字分解出来?
有一表字段如下: 
 代码 名称 ...
a001 ... 
a002 ... 
a003 ... 
b001 ... 
b002 ... 
zc001 ...
我怎么才能把[代码]字段分解为两个字段()
 代码 前缀 数值 名称 ...
a001 a 1 ... ...
a002 a 2 ... ...
a003 a 3 ... ...
b001 b 1 ... ...
b002 b 2 ... ...
zc001 zc 1 ... ...

LEFT([代码], 1) AS 前缀, CAST(RIGHT([代码], 3) AS int) AS 数值

我用以上方法做了,但有几个问题:
1、代码字段的前缀字母位数不确定怎么办,比如有的1个字母有的2或3个?
2、代码字段的数值部份位数不确定怎么办?有没有办法处理那样的情况?
谢谢!


------解决方案--------------------
SQL code
--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (代码 varchar(5),名称 varchar(3))
insert into #T
select 'a001','...' union all
select 'a002','...' union all
select 'a003','...' union all
select 'b001','...' union all
select 'b002','...' union all
select 'zc001','...'
go
select 代码,left(代码,patindex('%[0-9]%',代码)-1) 前缀
from #T
go
drop table #T

/*
代码    前缀
----- -----
a001  a
a002  a
a003  a
b001  b
b002  b
zc001 zc

(6 row(s) affected)

*/

------解决方案--------------------
mark