2015-05-17 6 views
1

Я ищу эффективный способ преобразования строк в столбцы SQL Server. Я пробовал в Toad для Oracle, но теперь я хочу его в SQL Server.Сохраненная процедура преобразования строк в столбцы в SQL Server

Это мой пример:

CID SENTENCE 
1 Hello; Hi; 
2 Why; What; 

Результат должен быть, как

CID SENTENCE 

1 Hello 
1 Hi 
2 Why 
2 What 

Не могли бы вы помочь мне с этим?

ответ

0

Я бы посоветовал вам переосмыслить ваш дизайн базы данных. Это почти никогда не рекомендуется хранить данные в разделительной строке в любой реляционной базе данных.
Если вы не можете изменить дизайн базы данных, вам нужно использовать некоторые UDF для разделения строк.
Существует много разных подходов к разделить строки в sql-сервере, прочитайте this article о различиях между обычными способами.

Возможно, вы можете изменить выбранную функцию разделения строк, чтобы взять cid, а также sentence в качестве переменной и вернуть ее точно так же, как и желаемый результат для каждой строки в таблице.
Тогда все, что вам нужно сделать, это выбрать из таблицы с внутренним соединением с udf на cid.

0

попробовать

declare @var table (CID int, SENTENCE varchar(50)) 
    insert into @var(CID,SENTENCE) values 
    (1,'Hello; Hi;'), 
    (2,'Why; What;') 

    select cid,t.c.value('.','varchar(50)') as val 
from (select cid,x=cast('<t>'+ replace(stuff(sentence,len(sentence),1,''),';','</t><t>')+'</t>' as xml) 
from @var) a cross apply x.nodes('/t') t(c)