Столбец в массив или список с разделителями-запятыми в t-sql - PullRequest
0 голосов
/ 19 сентября 2018

Есть ли у t-sql такая возможность, как у oracle ?: Как бы я взял столбец из таблицы и кратко поместил его в массив?Если не ARRAY, то, возможно, список с разделителями-запятыми .... Мой тип данных - строка.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вот еще один пример того, как вы можете сделать значение через запятую.Будет работать в SQL версии 2008 R2 и выше:

    DECLARE @TestData TABLE
        (
            [ListItem] NVARCHAR(100)
        );

    --Declared as blank since leaving NULL will result in a final NULL value.
    DECLARE @DelimitedString NVARCHAR(500) = '';

    INSERT INTO @TestData (
                              [ListItem]
                          )
    VALUES ( N'ListItem1' )
         , ( N'ListItem2' )
         , ( N'ListItem3' );

    --puts the result set into @DelimitedString
    SELECT @DelimitedString = @DelimitedString + [ListItem] + N','
    FROM   @TestData;

    --Remove trailing comma
    SET @DelimitedString = SUBSTRING(
                                        @DelimitedString
                                      , 1
                                      , LEN(@DelimitedString) - 1
                                    );
    SELECT @DelimitedString;
0 голосов
/ 20 сентября 2018

Можно перебить его курсором ...

declare mycsv cursor for
select col1 from table1

declare @curItem nvarchar(max)
    , @csvList nvarchar(255)

select @curItem = ''
    , @csvList = ''
open mycsv

fetch next from mycsv into @curItem

while @@fetch_status = 0    
begin
    select @csvList = @csvList + @curItem + ','
    fetch next from mycsv into @curItem
end

close mycsv
deallocate mycsv

select @csvList

... затем обрезать запятую.

Хотелось бы придумать что-нибудь более элегантное.

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