日期:2014-05-16  浏览次数:20578 次

sql 字符串截取。紧急啊
      前台返回数据格式  1,张三,10001_#_2,李四,10002_#_5,王五,10008
      sql2008数据库,要插入表a,插入后数据为这样的

       编号   姓名       其他编号  
         1      张三        10001
         2      李四        10002
请问怎么把前述的字符串 拼接出来插入到表A里啊 ,谢谢,谢谢!
------解决方案--------------------
--1.函数
if exists(select * from sys.objects where name = 'f_splitSTR' and type = 'tf')
   drop function dbo.f_splitSTR
go
 
create function dbo.f_splitSTR
(
    @s varchar(8000),     --要分拆的字符串
    @split varchar(10)    --分隔字符

returns @re table(                      --要返回的临时表
                     col varchar(1000)  --临时表中的列 
                 )
as
begin   
  declare @len int
   
  set @len = LEN(@split)      --分隔符不一定就是一个字符,可能是2个字符
   
  while CHARINDEX(@split,@s) >0
  begin
    insert into @re 
    values(left(@s,charindex(@split,@s) - 1))
     
    set @s = STUFF(@s,1,charindex(@split,@s) - 1 + @len ,'')    --覆盖:字符串以及分隔符
  end
   
  insert into @re values(@s)
   
  return   --返回临时表
end
go  
 
 
 
declare @res nvarchar(100)
set @res=N'1,张三,10001_#_2,李四,10002_#_5,王五,10008';
 
set @res = REPLACE(@res,' ',',')
 
select PARSENAME(REPLACE(col,',','.'),1),PARSENAME(REPLACE(col,',','.'),2),PARSENAME(REPLACE(col,',','.'),3)
from dbo.f_splitSTR(@res,'_#_') t