请教一个字符串拆分的问题
请教一个字符串拆分的问题, 
 问题如下: 
     将下列字符串    "14321A#14532B#,12344A#14756C "   拆分成 
                      14321   A 
                      14532   B 
                      12344   A 
                      14756   C 
    的形式
------解决方案--------------------如何将 '2006-01-12|2006-02-13|2006-03-15|2006-11-11|2003-1-1 '按 '| '分割成 
 2006-01-12 
 2006-02-13 
 2006-03-15 
 2006-11-11 
 2003-1-1     
 declare @Days varchar(4000) 
 declare @tmpDay varchar(10) 
 set @Days= '2006-01-12|2006-02-13|2006-03-15|2006-11-11|2003-1-1 ' 
 set @tmpDay= ' ' 
 declare @i int 
 set @i=0 
 while @i <len(@Days) 
 begin  
   set @i=@i+1 
   if SUBSTRING(@Days,@i,1)= '| ' 
      begin 
        print left(@Days,@i-1) 
        set @Days=SUBSTRING(@Days,@i+1,len(@Days)) 
        set @i=0 
      end   
 end 
 print @Days     
 输出结果: 
 2006-01-12 
 2006-02-13 
 2006-03-15 
 2006-11-11 
 2003-1-1     
 一字段信息包括如下:李三|李三@d.com|公司|单位地址|   
 我将查询用(Select)只列出李三及单位地址的方法?   
 create table #t(c1 varchar(100)) 
 insert into #t select  'li4|33@com|mircrosoft|china| ' 
 insert into #t select  'zhang3|zhang3@163.com|IBM|USA| ' 
 insert into #t select  '李三|李三@d.com|公司|单位地址| '     
 select substring(c1,1,charindex( '| ',c1)-1) as name,  
 reverse(substring(reverse(c1) , 2 , charindex( '| ' , reverse(c1) , 2) - 2)) as address  from #t   
 drop table #t   
 name    address    
 -----   ------- 
 li4     china 
 zhang3  USA 
 李三    单位地址   
 (所影响的行数为 3 行)
------解决方案--------------------CREATE TABLE A(id INT,country VARCHAR(100)) 
 INSERT A 
 SELECT 1, '中国;日本;韩国 ' UNION ALL 
 SELECT 2, '美国;意大利;法国 ' UNION ALL 
 SELECT 3, '德国 ' 
 SELECT * FROM A   
 -- 建立一个辅助的临时表就可以了 
 SELECT TOP 8000 id = identity(int,1,1)  
 INTO # FROM syscolumns a, syscolumns b         
 SELECT  
     A.ID,  
     COUNTRY = SUBSTRING(A.COUNTRY, B.ID, CHARINDEX( '; ', A.COUNTRY +  '; ', B.ID) - B.ID)  
 FROM A, # B 
 WHERE SUBSTRING( '; ' + a.COUNTRY, B.id, 1) =  '; '    
 ORDER BY 1,2 
 GO   
 DROP TABLE A,#   
 id          country          
 ----------- ---------------- 
 1           中国;日本;韩国 
 2           美国;意大利;法国 
 3           德国   
 (所影响的行数为 3 行)   
 ID          COUNTRY   
 ----------- --------- 
 1           韩国 
 1           日本 
 1           中国 
 2           法国 
 2           美国 
 2           意大利 
 3           德国   
 (所影响的行数为 7 行)     
------解决方案--------------------if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[f_splitSTR] ') and xtype in (N 'FN ', N 'IF ', N 'TF ')) 
 drop function [dbo].[f_splitSTR] 
 GO   
 CREATE FUNCTION dbo.f_splitSTR( 
 @s varchar(8000),   --要分拆的字符串 
 @split varchar(10), --数据分隔符 
 @pos int            -- 取第几个 
 )RETURNS varchar(100) 
 AS 
 BEGIN 
 DECLARE @splitlen int, @re varchar(100) 
 SET @splitlen=LEN(@split+ 'a ') - 2 
 WHILE CHARINDEX(@split,@s) >  0 AND @pos >  0 
 SELECT 
 @re = LEFT(@s,CHARINDEX(@split,@s)-1), 
 @s=STUFF(@s,1,CHARINDEX(@spl