日期:2014-05-17  浏览次数:20421 次

SQL语句拆分表中内容,并变成两列
如何通过sql语句,把一列中的数据读出来,并把字母和数字分开,变成两列,比如:
Column1
A123
B23
BD21  
拆分后变为:
Col1    Col2
A        123
B         23
BD        21
sql 拆分数据列

------解决方案--------------------
try
select
  col1=left(Column1,patindex('%[0-9]%',Column1)-1),
  col2=substring(Column1,patindex('%[0-9]%',Column1),len(Column1)-patindex('%[0-9]%',Column1)+1)
from tb

------解决方案--------------------
select
  col1=CASE WHEN patindex('%[0-9]%',Column1)=0 THEN Column1 ELSE left(Column1,patindex('%[0-9]%',Column1)-1) END,
  col2=substring(Column1,patindex('%[0-9]%',Column1),len(Column1)-patindex('%[0-9]%',Column1)+1)
from tb

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

create table mg
(Column1 varchar(10))

insert into mg
 select 'A123' union all
 select 'B23' union all
 select 'BD21'
 

select substring(Column1,1,patindex('%[0-9]%',Column1)-1) 'Col1',
       substring(Column1,patindex('%[0-9]%',Column1),10) 'Col2'
from mg
 
/*
Col1       Col2
---------- ----------
A          123
B          23
BD         21

(3 row(s) affected)
*/