Разбейте строку и выведите результат в таблицу с 2 полями - PullRequest
0 голосов
/ 26 апреля 2018

В SQL Server я хотел бы отделить строковое поле от таблицы, мои данные таковы:

Например:

Select field1 
from table1;

Выход:

s1,t1 1,a 2,b 3,c 4,d

После разбиения этой строки я бы хотел, чтобы вывод был таблицей с 2 ​​столбцами:

s1 t1
-----
1  a
2  b
3  c
4  d

Я только что понял, что могу работать и с такого рода выходом, если есть какие-либо выводы, поделитесь.

s1, t1


1,a
2,b
3,c
4,d

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вот способ получить набор значений с разделителями, используя Jeim Moden's DelimitedSplit8K. Это супер быстро. http://www.sqlservercentral.com/articles/Tally+Table/72993/

Обратите внимание, я здесь использую переменную таблицы. Вы хотели бы использовать вашу фактическую таблицу.

declare @table1 table
(
    field1 varchar(1000)
)

insert @table1
select 's1,t1 1,a 2,b 3,c 4,d'
;

select max(case when ColumnValues.ItemNumber = 1 then ColumnValues.Item end)
    , max(case when ColumnValues.ItemNumber = 2 then ColumnValues.Item end)
from @table1 t
cross apply dbo.DelimitedSplit8K(t.field1, ' ') GroupedValues
cross apply dbo.DelimitedSplit8K(GroupedValues.Item, ',') ColumnValues
group by GroupedValues.ItemNumber

Это вернет:

s1  t1
1   a
2   b
3   c
4   d
0 голосов
/ 26 апреля 2018

Вы можете использовать STRING_SPLIT , чтобы получить желаемый результат ...

    SELECT DISTINCT 
            LEFT(s.value,CHARINDEX(',')-1 AS s1,
            SUBSTRING(s.value,CHARINDEX(',')+1,LEN(s.value)) AS t1
    FROM table1 AS t
    CROSS APPLY STRING_SPLIT(t.field1, ' ') AD s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...