【发布时间】:2020-07-17 16:03:07
【问题描述】:
我在 SQL Server 中遇到了 While 循环问题。
我想要做的是拆分类似的东西:
'@Name=John;@Surname=Kowalsky;@DATA=data;'
进入有 2 列的表,其中一列是 '@Name',第二列是 'John'
每次拆分后,我都写了一个更新来删除拆分字符串并从新字符串开始,但这不起作用。
CREATE TABLE test2 (x varchar(max), y varchar(max))
INSERT INTO test2 VALUES (1, '@Name=John;@Surname=Kowalsky;@DATA=data;')
CREATE TABLE test (x varchar(max), y varchar(max))
DECLARE @y varchar(max) = (SELECT y FROM test2)
WHILE (SELECT LEN(y) FROM test2) > 0
BEGIN
INSERT INTO test (x,y)
VALUES ((SUBSTRING(@y, CHARINDEX('@', @y)+1, CHARINDEX('=',@y) -CHARINDEX('@',@y)-1)),
(SUBSTRING(@y, CHARINDEX('=', @y)+1, CHARINDEX(';',@y) -CHARINDEX('=',@y)-1)))
UPDATE test2
SET y = REPLACE(y, SUBSTRING(y, 1, CHARINDEX(';', y)), '')
FROM test2
END
作为回报,我得到了 3 行相同的表测试:NAME / JOHN
所以这个循环几乎正确地完成了这项工作......我做错了什么?
【问题讨论】:
标签: sql-server string loops while-loop