У меня есть функция, которая принимает поле VARCHAR, которое мне затем нужно проанализировать и сгруппировать в отдельные столбцы.
Ниже приведен пример входных данных:
@input_data = '109.1|1|3.3|5.7|7.9,106.2|2|2.5|2.5|3.0,126.4.2|3|8.2|6.4|3.9'
Выходные данныеданные должны выглядеть следующим образом:
ID SEQ SCORE1 SCORE2 SCORE3
109.1 1 3.3 5.7 7.9
106.2 2 2.5 2.5 3.0
126.4.2 3 8.2 6.4 3.9
Как видите, я использую запятую для разделения входных данных и деления их на строки.Но моя проблема действительно возникает, когда я пытаюсь разбить данные каждой строки на соответствующие столбцы.Я понимаю, что могу использовать PARSENAME
для этого, но меня беспокоит использование точки в поле ID и в полях SCORE.
Пока у меня есть следующий запрос, который на самом деле не выполняет то, что я хочу.
SELECT PARSENAME(REPLACE(ms.value, '|', '.'), 5) AS ID,
PARSENAME(REPLACE(ms.value, '|', '.'), 4) AS SEQ,
PARSENAME(REPLACE(ms.value, '|', '.'), 3) AS SCORE1,
PARSENAME(REPLACE(ms.value, '|', '.'), 2) AS SCORE2,
PARSENAME(REPLACE(ms.value, '|', '.'), 1) AS SCORE3
FROM string_split(@input_data , ',') ms