Если вы используете SQL Server 2016+, вы можете попробовать использовать другой подход, основанный на анализе действительного текста JSON
.Вам необходимо преобразовать ваши входные данные в действительный массив JSON
('Name1 Am Name2 Chin Name3 Fina'
преобразуется в '["Name1","Am","Name2","Chin","Name3","Fina"]'
), а затем использовать JSON_VALUE()
, чтобы получить значение для указанного элемента в этом массиве.Обратите внимание, что массивы JSON
начинаются с нуля.
Statemnent:
DECLARE @MyString varchar(200)
DECLARE @FldName1 varchar(100), @FldName2 varchar(100), @FldName3 varchar(100),
@FldVal1 varchar(100), @FldVal2 varchar(100), @FldVal3 varchar(100)
SET @MyString = 'Name1 Am Name2 Chin Name3 Fina'
SELECT @MyString = CONCAT('["', REPLACE(@MyString, ' ', '","'), '"]')
SELECT
@FldName1 = JSON_VALUE(@MyString, '$[5]'),
@FldVal1 = JSON_VALUE(@MyString, '$[4]'),
@FldName2 = JSON_VALUE(@MyString, '$[3]'),
@FldVal2 = JSON_VALUE(@MyString, '$[2]'),
@FldName3 = JSON_VALUE(@MyString, '$[1]'),
@FldVal3 = JSON_VALUE(@MyString, '$[0]')
SELECT @FldName1, @FldVal1, @FldName2, @FldVal2, @FldName3, @FldVal3