我有一个字符串,其值以逗号分隔。 我需要将用逗号分隔的单个值插入表中。 我编写了以下代码,但值已插入表中。 任何人都可以帮我找到我的代码中的错误。
declare @str varchar(25)
set @str = 'a,b,c'
Create table #Qw(parts varchar(25))
while(patindex(',',@str)>0)
begin
insert into #Qw values(substring(@str,1,1))
end
select * from #Qw
答案 0 :(得分:2)
一些问题:
charindex
代替patindex
。
declare @str varchar(25)
set @str = 'a,b,c'
create table #Qw (parts varchar(25))
while (charindex(',', @str) > 0) begin
-- get first part of the string up to the first comma
insert into #Qw values(substring(@str, 1, charindex(',', @str) - 1))
-- remove first part of the string including the comma
set @str = substring(@str, charindex(',', @str) + 1, 100)
end
-- insert the last item from the string
insert into #Qw values(@str)
select * from #Qw
结果:
+-------+
| parts |
+-------+
| a |
| b |
| c |
+-------+
答案 1 :(得分:0)
这应该可以工作,即使字符串不是所有单个字符也能正常工作。
DECLARE @str varchar(25)
DECLARE @Pos int
SET @str = 'a,b,c'
Create table #Qw(parts varchar(25))
WHILE(CHARINDEX(',',@str)>0)
BEGIN
PRINT LEFT(@str,CHARINDEX(',',@str)-1)
INSERT INTO #Qw(parts) VALUES(LEFT(@str,CHARINDEX(',',@str)-1))
SET @str = RIGHT(@str,LEN(@str) - CHARINDEX(',',@str))
END
INSERT INTO #Qw(parts) VALUES(@str)
SELECT * FROM #Qw