STRING_SPLIT запятыми для разных таблиц - PullRequest
0 голосов
/ 02 мая 2020

Я использую SSMS и у меня небольшая проблема с функцией STRING_SPLIT. Допустим, у меня есть следующие записи, и я хочу разделить пол запятой.

Теперь я нашел единственный способ, как разделить пол по запятой и получить все значения в поле столбца.

Я хотел бы знать, можно ли разделить столбец пола, но поместите значения в другие столбцы: Боб в Имя, Смит в Фамилию и Мужской в ​​Гендер.

Name    Surname    Gender
-------------------------------------
                   Bob,Smith,Male
                   Jane,Walson,Female

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете получить желаемый результат, преобразовав вашу строку в XML, а затем воспользовавшись методами XML типа, такими как VALUE (подробнее здесь ), для извлечения необходимой информации:

DECLARE @tmp TABLE (OriginalString VARCHAR(100));

INSERT INTO @tmp
VALUES 
     ('Bob,Smith,Male')
    ,('Jane,Walson,Female')
;WITH Splitted
AS (
    SELECT  
         CAST('<x>' + REPLACE(OriginalString, ',', '</x><x>') + '</x>' AS XML) AS Parts
    FROM @tmp
    )
SELECT
     Parts.value(N'/x[1]', 'varchar(50)') as [Name]
    ,Parts.value(N'/x[2]', 'varchar(50)') as [Surname]
    ,Parts.value(N'/x[3]', 'varchar(50)') as [Gender]
FROM Splitted;

Результаты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...