怎样把一个文本字段里的字母和数字分解出来?解决方法
怎样把一个文本字段里的字母和数字分解出来?
有一表字段如下:
代码 名称 ...
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、代码字段的数值部份位数不确定怎么办?有没有办法处理那样的情况?
谢谢!
------解决方案--------------------
有一表字段如下:
代码 名称 ...
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