我要实现的是 如果 从前台传入string filename ="t1|t2|t3|"我的想法是,可以建立一个function f_spilt(@filename varchar,@seperator char)
returns varchar.分别返回t1,t2,t3 到他的调用存储过程中,然后在依次插入到表中
------------------------------------当然这个function 是我用一个procedure调用的
create proc p_insertFileName
@strFileName varchar(50)
as 
begin
   declare @returns varchar(30)
   declare @seperator char
   set @seperator = '1'
   exec @returns = f_spilt(@strFileName ,@seperator )
   insert into Resource(fileName) values(@returns)
end
go我的想法是这样的,split功能要怎么实现,请问

解决方案 »

  1.   

    等会中
    /*
    功能:实现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
    go
    --调用
    declare @s varchar(100)set @s='zhanpeng|zhanjia|leejing|llili|'select * from dbo.fn_split(@s,'|')drop function fn_split/*
    返回
    ------------------
    zhanpeng
    zhanjia
    leejing
    llili*/
      

  2.   

    你这是返回一个表,那在调用程序里面怎么实现分别插入了,因为我还有个 goodsID 要插入指点
      

  3.   

    sql server版中邹老大不是有split功能的函数
      

  4.   

    結合7712190() ( )的代碼,稍作修改下,就可以實現你的要求。你也可以加上別的字段。create proc p_insertFileName
    @strFileName varchar(50)
    as 
    begin
       declare @returns varchar(30)
       declare @seperator char
       set @seperator = '1'
    --   exec @returns = f_spilt(@strFileName ,@seperator )
    --   insert into Resource(fileName) values(@returns)
       insert into Resource(fileName) Select a from dbo.fn_split(@strFileName ,@seperator ) 
    end
    go