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

टी-एसक्यूएल में बिना टेक्स्ट वाले एक्सएमएल फील्ड को अपडेट करें

यह नोड (/filemeta/description/text())[1] एक्सएमएल में मौजूद नहीं है इसलिए बदलने के लिए कुछ भी नहीं है। आपको इसके बजाय एक इंसर्ट करना होगा। यदि आपके पास एक ऐसा परिदृश्य है जहां आपके पास एक मूल्य के साथ खाली नोड्स और नोड्स का मिश्रण है, तो आपको दो अपडेट स्टेटमेंट चलाने होंगे।

declare @filemetaDB table(filemeta xml)

insert into @filemetaDB values
('<filemeta><description>Not empty</description></filemeta>'), -- Not empty node
('<filemeta><description/></filemeta>'),                       -- Empty node
('<filemeta></filemeta>')                                      -- Missing node

-- Replace value for nodes with value
update @filemetaDB
set filemeta.modify('replace value of (/filemeta/description/text())[1] with "TEST 1"')
where filemeta.exist('/filemeta/description/text()') = 1

-- Add text node for empty nodes
update @filemetaDB
set filemeta.modify('insert text{"TEST 2"} into (/filemeta/description)[1]')
where filemeta.exist('/filemeta/description/text()') = 0

select *
from @filemetaDB

परिणाम:

filemeta
------------------------------------------------------
<filemeta><description>TEST 1</description></filemeta>
<filemeta><description>TEST 2</description></filemeta>
<filemeta />


  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 सर्वर 2017/2019 में SERVERPROPERTY () से सभी गुण लौटाती है

  2. एकाधिक SQL सर्वर एजेंट जॉब्स (T-SQL) के लिए समान शेड्यूल का उपयोग कैसे करें

  3. सी # SQL सर्वर डेटा प्रकार के समतुल्य

  4. SQL सर्वर में ON DELETE CASCADE के साथ विदेशी कुंजी बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 80

  5. एएसपीनेट में संग्रहीत प्रक्रिया से वापसी मूल्य प्राप्त करें