急,求一个拆分字符串的语句写法
一个表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