मैं एक xml स्तंभ में संग्रहीत एक डेटा है और बच्चे नोड्स के एक अल्पविराम द्वारा पृथक सूची की जरूरत है। नीचे लिपि का उपयोग करके, मुझे केवल "ए बी सी" मिल सकता है। कृपया xquery का उपयोग करके "ए, बी, सी" प्राप्त करने में मेरी सहायता करें (अल्पविराम के साथ अंतरिक्ष की सरल प्रतिस्थापन मदद नहीं करता है क्योंकि हमारे पास रिक्त स्थान के साथ डेटा है)।एसक्यूएल सर्वर स्तंभ से एक्सएमएल नोड्स जाओ के रूप में अल्पविराम से अलग किए
create table Temp12345 (col1 xml)
go
insert into Temp12345 (col1)
values('<fd><field i="22"><v>A</v><v>B</v><v>C</v></field></fd>')
go
select col1.value('(/fd/field[@i=22])[1] ', 'NVarchar(Max)')
from Temp12345
go
drop table Temp12345
go
एक काम कर जवाब के लिए +1। जिज्ञासा से, मुझे लगता है कि आप क्रॉस आवेदन का उपयोग कर रहे हैं। मैंने सीटीई के साथ कुछ ऐसा किया है। क्या दृष्टिकोण के लिए कोई महत्वपूर्ण लाभ है? – IamIC
@IanC: यकीन नहीं - अपने CTE देखने के लिए :-) कि अभी जिस तरह मैं जानता हूँ कि मैं पंक्ति के एक "छद्म तालिका" में एक्सएमएल नोड्स की एक सूची "चूरे" सकते हैं, यह से अलग-अलग बिट्स और टुकड़े हड़पने के लिए है के लिए होता है । –
@marc एक ही एप्लीकेशन नहीं है, लेकिन यह एक्सएमएल को इसी तरह से पूछता है: टी एएस के साथ ( \t \t \t SELECT \t x.node.value ('fn: local-name (।)', 'वर्कर (50) ') के रूप में RankItem, \t \t \t \t \t x.node.value (' (।) ',' नाव ') के रूप में मूल्य \t \t \t \t से @ xml.nodes ('/डेटा/* ') के रूप में एक्स (नोड) \t \t - जड़ का चयन करें * प्रत्यक्ष * बच्चों 'डेटा' नोड \t \t) \t \t का चयन करें \t @OutOfBounds = काउंट (t.RankItem) \t \t \t से टी अंदरूनी शामिल हों [int] .RankItems के रूप में री पर ri.RankItem = t.RankItem \t \t कहां \t (t.Value <री। [मिन] या टी। वैल्यू> ri। [अधिकतम]) – IamIC