取字符串问题,急……
有类似下面的这样一个字符串 
 A121,B456,C1215 
 比如说A121是一个串,和B456是分开的,中间以 ', '来分隔, 
 我建了一个临时表#P(DH   varchar(30))来存放底下的数据 
 A121 
 B456 
 C1215 
 就是要把上面的字符串以 ', '隔开的字符串插到临时表, 
 要怎么操作速度会比较快一点?谢谢 
 这个字符串长度无法得知,而且每个字符串(就是‘,’分隔开的) 
 长度也是无法确定的,只知道最多不会超过30位
------解决方案--------------------    /* 
 	功能:实现split功能的函数 
 */   
 create function fn_split  
 	( 
 		@inputstr varchar(8000),  
 		@seprator varchar(10) 
 	) 
 returns @temp table (a varchar(200)) 
 as    
 begin 
 	declare @i int   
 	set @inputstr = rtrim(ltrim(@inputstr)) 
 	set @i = charindex(@seprator, @inputstr)   
 	while @i > = 1 
 	begin 
 		insert @temp values(left(@inputstr, @i - 1))   
 		set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i) 
 		set @i = charindex(@seprator, @inputstr) 
 	end   
 	if @inputstr  <>   '\ ' 
 		insert @temp values(@inputstr)   
 	return  
 end     
------解决方案--------------------CREATE FUNCTION dbo.f_splitSTR( 
 @s   varchar(8000),  --待分拆的字符串 
 @split varchar(10)     --数据分隔符 
 )RETURNS @re TABLE(col varchar(100)) 
 AS 
 BEGIN 
 	--创建分拆处理的辅助表(用户定义函数中只能操作表变量) 
 	DECLARE @t TABLE(ID int IDENTITY,b bit) 
 	INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b   
 	INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) 
 	FROM @t 
 	WHERE ID <=LEN(@s+ 'a ')  
 		AND CHARINDEX(@split,@split+@s,ID)=ID 
 	RETURN 
 END 
 GO 
 select * from dbo.f_splitSTR( 'aaaa,bbbbb,ccccccc ', ', ')
------解决方案--------------------declare @sql varchar(8000) 
 set @sql= 'A121,B456,C1215 ' 
 print @sql 
 create table tmp(id varchar(30)) 
 set @sql= 'insert into tmp select  ' ' '+replace(@sql, ', ', ' ' ';insert into tmp select  ' ' ')+ ' ' ' ' 
 exec( @sql) 
 select * from tmp 
------解决方案--------------------create table ta(id int,tag varchar(1000)) 
 insert ta select 1,      '飞机,大炮,轮船,火箭,火箭,飞机 ' 
 insert ta select 2,      '飞机,楼房 ' 
 insert ta select 3,      '飞机,火箭,大炮 ' 
 insert ta select 4,      '飞机,飞机,飞机 '     
 SELECT TOP 100 id = IDENTITY(int, 1, 1)  
 INTO #a --创建临时辅助表 
 FROM syscolumns a, syscolumns b   
 SELECT    A.id,  
 tag=SUBSTRING(A.tag, B.id, CHARINDEX( ', ', A.tag +  ', ', B.id) - B.id) 
 FROM ta A, #a B 
 WHERE SUBSTRING( ', ' + A.tag, B.id, 1) =  ', '    
 id          tag                                                                                                                                                                                                                                                               
 ----------- ----------------------------------------------------------------------------------------------------------------  
 1           飞机 
 1           大炮 
 1           轮船 
 1           火箭 
 1           火箭 
 1           飞机 
 2           飞机 
 2           楼房 
 3           飞机 
 3           火箭 
 3           大炮 
 4           飞机 
 4           飞机 
 4           飞机   
 (所影响的行数为 14 行)