Вы можете попытаться использовать подход, основанный на JSON. Вам необходимо преобразовать входную строку в действительный массив JSON (b,a,c
преобразуется в ["b","a","c"]
), а затем проанализировать этот массив с OPENJSON()
и схемой по умолчанию. В результате получается таблица со столбцами key
, value
и type
, и на основе документации столбец key
имеет значение значение nvarchar (4000), которое содержит имя указанного свойства или индекс элемента в указанном массиве .
Оператор:
DECLARE @StringToSplit VARCHAR(100) = 'b,a,c';
SELECT [value]
FROM OPENJSON(CONCAT('["', REPLACE(@StringToSplit, ',', '","'), '"]'))
ORDER BY CONVERT(int, [key])
Результат:
value
b
a
c
Если у вас есть кавычки во входной строке, попробуйте с следующее утверждение, используя STRING_ESCAPE()
:
DECLARE @StringToSplit VARCHAR(100) = '"b",''a'',c';
SELECT [value]
FROM OPENJSON(CONCAT('["', REPLACE(STRING_ESCAPE(@StringToSplit, 'json'), ',', '","'), '"]'))
ORDER BY CONVERT(int, [key])
Результат:
value
"b"
'a'
c