Я хочу создать функцию, которая возвращает таблицу с двумя столбцами, извлеченными из входной строки.
В качестве входных данных функция получает строку типа:
'@Name=John;@Secondname=Kowalsky;@Mail=example@mail.com;'
Функция Предполагается создать из этой строки два столбца - x, y.
X для @value
и Y для значения после =
.
Я создал это:
Create FUNCTION TwoColumnsFromString (
@ReplaceString varchar(max)
)
Returns @temptable TABLE (x varchar(max), y varchar(max))
AS
BEGIN
DECLARE @value1 varchar(max)
WHILE (LEN(@value1)) > 0
BEGIN
SELECT @value1 = (Select @ReplaceString)
INSERT INTO @temptable (x,y)
VALUES ((SUBSTRING(@ReplaceString, CHARINDEX('@', @ReplaceString), CHARINDEX('=',@ReplaceString) -CHARINDEX('@',@ReplaceString))),
(SUBSTRING(@ReplaceString, CHARINDEX('=', @ReplaceString)+1, CHARINDEX(';',@ReplaceString) -CHARINDEX('=',@ReplaceString)-1)))
SET @value1 = REPLACE(@value1, SUBSTRING(@value1, 1, CHARINDEX(';', @value1)), '')
END
RETURN
END
GO
SELECT *
FROM TwoColumnsFromString('@Name=John;@Secondname=Kowalsky;@Mail=example@mail.com;')
Но это возвращает пустую таблицу. Что я тут не так делаю?