Разделите запятую Разделенные значения в разные строки - PullRequest
0 голосов
/ 09 июля 2019

На данный момент мои данные выглядят так, все 3 предпочтения разделены запятой ...

Subscriber ID                      Preference
34732632746                      Abc123, abc1234, bcd232

Я хочу продублировать идентификатор абонента и разделить предпочтения на разные строки ... например:

Subscriber ID                      Preference
34732632746                      Abc123
34732632746                      abc1234 
34732632746                      bcd232 

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы не указали свой продукт СУБД, но если вы используете Postgres, вы можете использовать unnest() и string_to_array()

select t.subscriber_id
       p.preference
from the_table t
  cross join lateral unnest(string_to_array(p.preference, ',')) as p(preference);
0 голосов
/ 09 июля 2019

Если вы использовали SQL Server 2017, пожалуйста, проверьте ниже запрос.

SELECT 
      SubscriberID,Value AS Preference 
FROM @tblName 
    CROSS APPLY STRING_SPLIT(Preference, ',');

Если вы использовали более низкую версию SQL Server 2017, добавьте функцию разделения строк и используйте запрос ниже.

----- Запрос ------------

SELECT SubscriberID,Item AS Preference from @tbl CROSS APPLY dbo.SplitString(Preference, ',');

----- Запрос ------------

----- Функция ---------

CREATE FUNCTION [dbo].[SplitString]
(    
      @Input NVARCHAR(MAX),
      @Character CHAR(1)
)
RETURNS @Output TABLE (
      Item NVARCHAR(1000)
)
AS
BEGIN
      DECLARE @StartIndex INT, @EndIndex INT

      SET @StartIndex = 1
      IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
      BEGIN
            SET @Input = @Input + @Character
      END

      WHILE CHARINDEX(@Character, @Input) > 0
      BEGIN
            SET @EndIndex = CHARINDEX(@Character, @Input)

            INSERT INTO @Output(Item)
            SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)

            SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
      END

      RETURN
END

----- Функция ---------

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