Я понимаю, что это действительно старый вопрос, но начиная с SQL Server 2016 существуют функции для анализа данных JSON, которые можно использовать для конкретного решения вопроса OP - без разделения строк или обращения к пользовательской функции. Чтобы получить доступ к элементу с определенным индексом строки с разделителями, используйте функцию JSON_VALUE
. Однако необходимо правильно отформатировать данные JSON: строки должны быть заключены в двойные кавычки "
, а разделитель должен быть запятой ,
, а вся строка заключена в квадратные скобки []
.
DECLARE @SampleString NVARCHAR(MAX) = '"Hello John Smith"';
--Format as JSON data.
SET @SampleString = '[' + REPLACE(@SampleString, ' ', '","') + ']';
SELECT
JSON_VALUE(@SampleString, '$[0]') AS Element1Value,
JSON_VALUE(@SampleString, '$[1]') AS Element2Value,
JSON_VALUE(@SampleString, '$[2]') AS Element3Value;
выход 1010 *
*
Element1Value Element2Value Element3Value
--------------------- ------------------- ------------------------------
Hello John Smith
(1 row affected)