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

急,求一个拆分字符串的语句写法
一个表B中有字段A,其格式如下:
大通支行(0408014654654748)
小通支行16124646546546022507121
.............


想把他拆分成

银行                         帐号
大通支行         0408014654654748
小通支行         16124646546546022507121


也就是把汉字和数字拆分开来,并且如果遇有()要把()除掉,只保留汉字与数字部分

求高手指点

------解决方案--------------------
declare @s varchar(8000)
set @s= '大通支行(0408014654654748) '
set @s=replace(replace(replace(@s, '( ', ' '), ') ', ' '), ' ', ' ')
select left(@s,patindex( '%[0-9]% ',@s)-1),right(@s,len(@s)-patindex( '%[0-9]% ',@s)+1)

------解决方案--------------------
drop table B
go
create table B(A varchar(100))
insert into B
select '大通支行(0408014654654748) '
union all select '小通支行16124646546546022507121 '

select left(replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '),patindex( '%[0-9]% ',replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '))-1) as '银行 ',
stuff(replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '),1,patindex( '%[0-9]% ',replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '))-1, ' ') as '帐号 '
from B
/*
银行 帐号
---------------------------------
大通支行 0408014654654748
小通支行 16124646546546022507121
*/
------解决方案--------------------
select left(replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '),patindex( '%[0-9]% ',replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '))-1) as '银行 ',
stuff(replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '),1,patindex( '%[0-9]% ',replace(replace(replace(replace(replace(A, ' ', ' '), '( ', ' '), ') ', ' '), '( ', ' '), ') ', ' '))-1, ' ') as '帐号 '
from (select case when patindex( '%[0-9]% ',A) <=0 then A+ '0 ' else A end A from B)B