首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急拆分字符串的语句写法

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

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

热点排行