2016-09-26 3 views
0

Ich habe eine Tabelle mit einem Inhaltsfeld, das mit IDs der Elemente auf dieser Seite gefüllt ist. Wie folgt aus:Erstellen einer temporären Tabelle ohne Spalteninhalt

ID    | Contents 
Section-page-id | item-1 item-2 item-3 item-4 item-5 
Section-page-id2 | item-6 item-7 item-8 item-9 item-10 

Ich möchte eine temporäre Tabelle erstellen, die wie folgt aussieht:

Section-id  |ID 
item-1   |Section-page-id 
item-2   |Section-page-id 
item-3   |Section-page-id 
item-4   |Section-page-id 
item-5   |Section-page-id 
item-6   |Section-page-id2 
item-7   |Section-page-id2 
item-8   |Section-page-id2 
item-9   |Section-page-id2 
item-10   |Section-page-id2 

Ist das überhaupt möglich? Vielen Dank im Voraus für Ihre Zeit.

+1

Dies ist ein schlechtes Design. Wenn Sie mehrere Werte in eine einzelne Spalte stopfen, verletzt das 1NF und es ist ein schwerer Schmerz, damit zu arbeiten. Sie benötigen einen String-Splitter, um diesen in etwas Brauchbares zu zerlegen. http://sqlperformance.com/2012/07/t-sql-queries/split-strings –

+1

Es gibt viele gut dokumentierte Antworten zum Thema, wie Sie eine Trennzeichenfolge in Zeilen aufteilen. Auf dieser Seite und anderen. Rekursive allgemeine Tabellenausdruckmethode, Tabellenwertfunktionen, XML. Was hast du gesucht und was hast du probiert? – Matt

Antwort

0

Von Turning a Comma Separated string into individual rows:

Declare @YourTable table 
(
ID varchar(50), 
Contents varchar(max) 
) 
Insert Into @YourTable values 
('Section-page-id','item-1 item-2 item-3 item-4 item-5'), 
('Section-page-id2','item-6 item-7 item-8 item-9 item-10') 


;WITH CTE (ID, SectionId, Contents) as (

select ID, LEFT(Contents, CHARINDEX(' ',Contents+' ')-1), 
    STUFF(Contents, 1, CHARINDEX(' ',Contents+' '), '') 
from @YourTable 
union all 
select ID, LEFT(Contents, CHARINDEX(' ',Contents+' ')-1), 
    STUFF(Contents, 1, CHARINDEX(' ',Contents+' '), '') 
from CTE 
where Contents > '' 
) 
select SectionId, ID 
from CTE 
order by ID 
+0

Vielen Dank. Dies funktioniert perfekt und wird von großem Nutzen sein. – Southerncentralrain

Verwandte Themen