2012-12-14 17 views
25

मैं एक मेज तरह.. पंक्तियों

नीचे
Id | String 
-------------- 
1  abc,def,ghi 
2  jkl,mno,pqr 

मैं उत्पादन की तरह की जरूरत है संग्रहीत डेटा के साथ नमूना के लिए कन्वर्ट अल्पविराम से अलग किए स्तंभ मान

Id | processedrows 
-------------- 
1  abc 
1  def 
1  ghi 
2  jkl 
2  mno 
2  pqr 

मैं के साथ एक ही कैसे कर सकते SQL सर्वर में एक चयन क्वेरी?

+10

*** एसक्यूएल *** है बस * स्ट्रक्चर्ड क्वेरी लैंग्वेज * - कई डाटाबेस सिस्टम द्वारा प्रयुक्त भाषा है, लेकिन नहीं आ डेटाबेस उत्पाद ... बहुत सी बातें विक्रेता विशिष्ट हैं - हम तो वास्तव में यह जानने की जरूरत है कि ** डेटाबेस सिस्टम ** (और कौन सा संस्करण) आप उपयोग कर रहे हैं .... –

+0

मुझे अपनी समस्या के बारे में और बताएं! आपकी मेज क्या है? या यह स्कीमा –

+4

सबसे पहले, आप एक खराब डेटा मॉडल का उपयोग कर रहे हैं। अल्पविराम-सीमित तारों को डेटाबेस में कभी भी नहीं होना चाहिए। अवधि। –

उत्तर

45

कोशिश इस

SELECT A.[id], 
    Split.a.value('.', 'VARCHAR(100)') AS String 
FROM (SELECT [id], 
     CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String 
    FROM TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a); 

यहाँ

http://www.sqljason.com/2010/05/converting-single-comma-separated-row.html

+0

धन्यवाद .. यह मदद करनी चाहिए .. वास्तव में मैं क्या देख रहा था! – mhn

+1

धन्यवाद! यह मेरी मदद की! – Gidil

+0

बहुत बढ़िया। बहुत समय बचाया! – Shahdat

0

उल्लेख के नीचे स्क्रिप्ट कोशिश करते हैं: -

declare @str varchar(max) 

SELECT @str = isnull(@str +',', '') + a.Value 
FROM (SELECT Value Entityvalue from Table) a 

select @str 
0

इस के साथ प्रयास करें। आपको अपना आउटपुट मिल जाएगा।

SELECT id, 
PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) 'Values' 
FROM 
(
    SELECT algorithms, 
    CAST ('<M>' + REPLACE(string, ',', '</M><M>') + '</M>' AS XML) AS Data 
    FROM <TableName> 
) AS A 
CROSS APPLY Data.nodes ('/M') AS Split(a) 
0
SELECT EmployeeID, 
LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS Certs 
FROM 
(
SELECT EmployeeID,CAST('<XMLRoot><RowData>' + REPLACE(Certs,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x 
FROM @t 
)t 
CROSS APPLY x.nodes('/XMLRoot/RowData')m(n) 
+0

I मुझे यकीन नहीं है कि यह सवाल का जवाब देता है, लेकिन ऐसा प्रतीत नहीं होता है; प्रश्न में 'कर्मचारी' नामक फ़ील्ड नहीं है, और स्ट्रिंग मानों को एक्सएमएल में बदलना मेरे लिए भारी ओवरकिल जैसा लगता है ... – DaveyDaveDave

+0

जबकि इस कोड स्निपेट का स्वागत है, और कुछ मदद प्रदान कर सकता है, यह बहुत बेहतर होगा इसमें एक स्पष्टीकरण शामिल था] (// meta.stackexchange.com/q/114762) * कैसे * यह प्रश्न को संबोधित करता है। इसके बिना, आपके उत्तर में बहुत कम शैक्षणिक मूल्य है - याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, न सिर्फ उस व्यक्ति से पूछ रहे हैं! स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें, और संकेत दें कि कौन सी सीमाएं और धारणाएं लागू होती हैं। –

संबंधित मुद्दे