存储过程如何 解析字符串

我想往存储过程中传递一个 类似 "name1,name2,name3,name4" 这样的参数

想在 存储过程中 把 该 字符串通过“,”解析出来。
并循环的添加到数据中 各位高手 救救我吧。

数据库 sqlserver 2000
谁给写一个存储过程啊。很着急

方法:
1.创建split函数(转)
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
--date :2005-4-20
--Author :Domino
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end

用法:select * from dbo.f_split('A:B:C:D:E',':')

2.存储过程

CREATE PROCEDURE InsertRecord
@Qstring varchar(50),
AS
insert into names(name1,name2,name3,name4) values
(select * from dbo.f_split(@Qstring,',')

3.调用存储过程
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-06
用instrb()这个函数循环取得每个‘,’的下标,然后用substr(string,i,j)取得子串。
这个是在oracle下的,你试试能不能在sqlserver2000下用。
第2个回答  2008-10-09
这个用个笨办法可以办到,先使用CHARINDEX()找出第一“,”的位置,再用SUBSTRING()取出第一个变量,然后找第二个“,”,依次取出就行了。~~
相似回答
大家正在搜