Согласно документам STRING_SPLIT()
не гарантирует возврата ожидаемого порядка сортировки.
Выходные строки могут быть в любом порядке . Не гарантируется, что порядок соответствует порядку подстрок во входной строке.
Прочитайте это здесь: STRING_SPLIT () документация
Попробуйте это JSON подхода:
DECLARE @yourString NVARCHAR(100)=N'0.0000, 3546.0000, 253422.000';
- просто вернуть массив как производную таблицу
SELECT *
FROM OPENJSON(CONCAT(N'[',@yourString,']'))
- использовать неявное вращение с помощью предложения WITH (требуются двойные скобки массива)
SELECT *
FROM OPENJSON(CONCAT(N'[[',@yourString,']]'))
WITH (val1 FLOAT '$[0]'
,val2 FLOAT '$[1]'
,val3 FLOAT '$[2]')
ОБНОВЛЕНИЕ
Здесь я использую образец вашего другого вопроса. Пожалуйста, - для вашего следующего вопроса - не размещайте фотографию. Никто не хочет вводить значения.
Лучше всего использовать DDL и INSERT, как я это делаю здесь:
- Определить таблицу макетов для имитации вашей проблемы и вставить образец данные
DECLARE @tbl TABLE(ID INT,[TYPE] VARCHAR(100),prouctValues VARCHAR(100),subproValues VARCHAR(100),Amount VARCHAR(100));
INSERT INTO @tbl VALUES
(23844,'12, 19','0.0000, 0.0000','0.0000, 0.0000','0.0000, 0.0000,37464.083')
,(25397,'1, 3,26','0.0000, 0.0000,2.345','0.0000,0.2345, 0.0000 ','25455.6800, 0.0000');
- запрос
SELECT t.ID
,AllTypes.*
,AllPvals.*
,AllSPvals.*
,AllAmts.*
FROM @tbl t
CROSS APPLY OPENJSON(CONCAT('[[',t.[TYPE],']]')) WITH(t1 INT '$[0]'
,t2 INT '$[1]'
,t3 INT '$[2]') AllTypes
CROSS APPLY OPENJSON(CONCAT('[[',t.prouctValues,']]')) WITH(pval_1 DECIMAL(10,4) '$[0]'
,pval_2 DECIMAL(10,4) '$[1]'
,pval_3 DECIMAL(10,4) '$[2]') AllPVals
CROSS APPLY OPENJSON(CONCAT('[[',t.subproValues,']]')) WITH(spval_1 DECIMAL(10,4) '$[0]'
,spval_2 DECIMAL(10,4) '$[1]'
,spval_3 DECIMAL(10,4) '$[2]') AllSPVals
CROSS APPLY OPENJSON(CONCAT('[[',t.Amount,']]')) WITH(amt_1 DECIMAL(10,4) '$[0]'
,amt_2 DECIMAL(10,4) '$[1]'
,amt_3 DECIMAL(10,4) '$[2]') AllAmts;
результат
+-------+----+----+------+--------+--------+--------+---------+---------+---------+------------+--------+------------+
| ID | t1 | t2 | t3 | pval_1 | pval_2 | pval_3 | spval_1 | spval_2 | spval_3 | amt_1 | amt_2 | amt_3 |
+-------+----+----+------+--------+--------+--------+---------+---------+---------+------------+--------+------------+
| 23844 | 12 | 19 | NULL | 0.0000 | 0.0000 | NULL | 0.0000 | 0.0000 | NULL | 0.0000 | 0.0000 | 37464.0830 |
+-------+----+----+------+--------+--------+--------+---------+---------+---------+------------+--------+------------+
| 25397 | 1 | 3 | 26 | 0.0000 | 0.0000 | 2.3450 | 0.0000 | 0.2345 | 0.0000 | 25455.6800 | 0.0000 | NULL |
+-------+----+----+------+--------+--------+--------+---------+---------+---------+------------+--------+------------+