日期:2014-05-19  浏览次数:20475 次

请dawugui(潇洒老乌龟) 再帮一下忙,谢谢,其它朋友也可进入
if   object_id( 'pubs..tb ')   is   not   null
      drop   table   tb
go

create   table   tb(bh   varchar(10),mc   varchar(50))
insert   into   tb(bh,mc)   values( '001 ',                     'xyz/ym/zx32s(50/25/25) ')
insert   into   tb(bh,mc)   values( '002 ',                     'xb/yss45s(65/35) ')
insert   into   tb(bh,mc)   values( '003 ',                     'cx40s '   )
go

alter   table   tb   add   mc1   varchar(50)
alter   table   tb   add   mc2   varchar(50)
go

update   tb
set   mc1   =   left(mc   ,   charindex( '( ',mc)   -1),  
        mc2   =   substring(mc   ,   charindex( '( '   ,   mc)   +   1   ,   charindex( ') '   ,   mc)   -   charindex( '( '   ,   mc)   -   1)
where   charindex( '( '   ,   mc)   >   0

SELECT   TOP   8000   id   =   identity(int,1,1)  
INTO   #   FROM   syscolumns   a,   syscolumns   b      

SELECT  
        id   =   identity(int,1,1),
        A.bh,  
        mc1   =   SUBSTRING(A.mc1,   B.ID,   CHARINDEX( '/ ',   A.mc1   +   '/ ',   B.ID)   -   B.ID)  
into   test1
FROM   tb   A,   #   B
WHERE   SUBSTRING( '/ '   +   A.mc1,   B.ID,   1)   =   '/ '      
ORDER   BY   1,2

SELECT  
        id   =   identity(int,1,1),
        A.bh,  
        mc2   =   SUBSTRING(A.mc2,   B.ID,   CHARINDEX( '/ ',   A.mc2   +   '/ ',   B.ID)   -   B.ID)  
into   test2
FROM   tb   A,   #   B
WHERE   SUBSTRING( '/ '   +   A.mc2,   B.ID,   1)   =   '/ '      
ORDER   BY   1,2

select   a.bh   ,   left(a.mc1,1)   mc1   ,   b.mc2   from   test1   a,test2   b   where   a.id   =   b.id

drop   table   tb,#,test1,test2

/*
bh                   mc1     mc2                                                                                                
----------   ----   --------------------------------------------------  
001                 x         50
001