इसके बारे में कैसे:
SELECT
TOP 1
XMLCOL.value('(/user/name)[1]', 'nvarchar(20)') as 'UserName',
Usr.Token.value('(id)[1]', 'nvarchar(20)') AS 'ID',
Usr.Token.value('(endDate)[1]', 'DateTime') as 'EndDate'
FROM
dbo.MyTable
CROSS APPLY
xmlcol.nodes('/user/token') AS Usr(Token)
ORDER BY
Usr.Token.value('(endDate)[1]', 'DateTime') DESC
आप मूल रूप से एक्सएमएल से सीधे 'उपयोगकर्ता नाम' जैसे "परमाणु" भाग लेते हैं, और फिर / उपयोगकर्ता / टोकन की एक सूची लागू करते हैं और अपनी इच्छित व्यक्तिगत बिट्स निकालते हैं - आपको तीन कॉलम (उपयोगकर्ता नाम, आईडी, एंडडेट) का परिणाम सेट मिलता है ) और आप उन्हें ऑर्डर और फ़िल्टर कर सकते हैं।
साइड नोट:इसके बजाय:
XMLCOL.query('user/name').value('.','NVARCHAR(20)')
आप इसका उपयोग क्यों नहीं करते - बहुत आसान लगता है!
XMLCOL.value('(/user/name)[1]', 'NVARCHAR(20)')