Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं SQL सर्वर XML कॉलम में किसी मान की क्वेरी कैसे कर सकता हूं?

select
  Roles
from
  MyTable
where
  Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'

यदि आपका कॉलम XML नहीं है तो , आपको इसे रूपांतरित करने की आवश्यकता है। आप अपने XML डेटा की कुछ विशेषताओं को क्वेरी करने के लिए अन्य सिंटैक्स का भी उपयोग कर सकते हैं। यहाँ एक उदाहरण है...

मान लें कि डेटा कॉलम में यह है:

<Utilities.CodeSystems.CodeSystemCodes iid="107" CodeSystem="2" Code="0001F" CodeTags="-19-"..../>

... और आप केवल वही चाहते हैं जहां CodeSystem = 2 तो आपकी क्वेरी होगी:

select 
  [data] 
from
  [dbo].[CodeSystemCodes_data]
  
where
  CAST([data] as XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'

ये पृष्ठ आपको टी-एसक्यूएल में एक्सएमएल को क्वेरी करने के तरीके के बारे में अधिक दिखाएंगे:

t-sql का उपयोग करके XML फ़ील्ड को क्वेरी करना

SQL सर्वर में XML डेटा को समतल करना

संपादित करें

इसके साथ थोड़ा और खेलने के बाद, मैं इस अद्भुत क्वेरी के साथ समाप्त हुआ जो क्रॉस एप्लाई का उपयोग करता है। यह हर पंक्ति (भूमिका) में आपके द्वारा अपनी पसंद की अभिव्यक्ति में रखे गए मूल्य की खोज करेगा...

इस तालिका संरचना को देखते हुए:

create table MyTable (Roles XML)

insert into MyTable values
('<root>
   <role>Alpha</role>
   <role>Gamma</role>
   <role>Beta</role>
</root>')

हम इसे इस तरह क्वेरी कर सकते हैं:

select * from 

(select 
       pref.value('(text())[1]', 'varchar(32)') as RoleName
from 
       MyTable CROSS APPLY

       Roles.nodes('/root/role') AS Roles(pref)
)  as Result

where RoleName like '%ga%'

आप SQL Fiddle को यहाँ देख सकते हैं:http://sqlfiddle.com/#!18/dc4d2/1/0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस बदलें श्रोता सी #

  2. SQL सर्वर 2008 में चुनिंदा क्वेरी परिणाम से तालिका कैसे बनाएं?

  3. SQL सर्वर समर्थित संस्करण मैट्रिक्स

  4. SQL में दो तिथियों के बीच पूर्ण महीनों की संख्या की गणना करना

  5. एडीओ के साथ सी # में कुशल एसक्यूएल सर्वर डेडलॉक हैंडलिंग कैसे प्राप्त करें?