11 EKİM 2008, CUMARTESİ
Birçok satır tek bir metin dizesi halinde arada?
Veritabanı bir tablo, üç satır: isim tutarak düşünün
Peter
Paul
Mary
Kolay bir yolu Peter, Paul, Mary
tek bir dize içine bu açmak için var mı?
CEVAP
13 ŞUBAT 2009, Cuma
Bir-çok ilişkileri ile iki tabloyu birleştirmek için çalışırken benzer bir sorun vardı. SQL 2005 XML PATH yöntemi satırları birleştirmeyi çok kolayca işleyebilir buldum.
Bir tablo ÖĞRENCİLERE verilir
SubjectID StudentName
---------- -------------
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
Sonucu bekleniyordu:
SubjectID StudentName
---------- -------------
1 Mary, John, Sam
2 Alaina, Edward
Aşağıdaki T-SQL kullandım
Select Main.SubjectID,
Left(Main.Students,Len(Main.Students)-1) As "Students"
From
(
Select distinct ST2.SubjectID,
(
Select ST1.StudentName ',' AS [text()]
From dbo.Students ST1
Where ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
For XML PATH ('')
) [Students]
From dbo.Students ST2
) [Main]
Eğer başında virgülleri herhangi bir parametre ve alt sorgu yapmana gerek yok yani ilk atlamak için kullanabilirsiniz eğer daha kompakt bir şekilde aynı şeyi yapabilirsiniz:
Select distinct ST2.SubjectID,
substring(
(
Select ',' ST1.StudentName AS [text()]
From dbo.Students ST1
Where ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
For XML PATH ('')
), 2, 1000) [Students]
From dbo.Students ST2
Bunu Paylaş:
Neden basit bir beşgen kullanmaktır bi...
Nasıl jsoup düz metin html dönüştürmek...
Nasıl çoklu satır UİButton metin eklem...
Sil belirli bir satır numarası(ler) bi...
Yüce Metin düzenli ifade: herhangi bir...