Monday, 15 July 2013

c# - Replace XML string using SQL Server Replace or CLR Regex? -


मेरे पास निम्न XML स्ट्रिंग है:

  & lt; पंक्ति & gt; & LT; आईडी & gt; & LT; वर्ष & gt; & lt; / वर्ष & gt; & LT; नई & gt; 2151 & lt; / नई & gt; & Lt; / आईडी & gt; & LT; नाम & gt; & LT; वर्ष & gt; & lt; / वर्ष & gt; & LT; नई & gt; परीक्षण & lt; / नई & gt; & Lt; / नाम & gt; & LT; राशि & gt; & LT; वर्ष & gt; & lt; / वर्ष & gt; & LT; नई & gt; 62 & lt; / नई & gt; & Lt; / राशि & gt; & Lt; / पंक्ति & gt;  

मुझे स्ट्रिंग को पार्स और प्रतिस्थापित करने की आवश्यकता है ताकि अंतिम परिणाम में प्रारूप होगा:

  columnname | oldvalue | newvalue ^  < / Pre> 

इसलिए उपर्युक्त उदाहरण इस तरह दिखेगा:

  id || 2151 ^ name || test ^ राशि || 62 ^  

XML स्ट्रिंग में हमेशा एक पंक्ति नोड होता होगा इसके भीतर नोड्स (आईआईडी, नाम, राशि, आदि) अलग-अलग होंगे और यह दो नोड्स से 100 से अधिक नोड्स तक हो सकते हैं। हालांकि संरचना हमेशा समान होगी।

क्या यह SQL सर्वर में सीधे करना संभव है या क्या मुझे नियमित अभिव्यक्तियों का उपयोग करने के लिए सीएलआर फ़ंक्शन का उपयोग करने की आवश्यकता है?

फ़ंक्शन सामान्य होना चाहिए क्योंकि कॉलम नाम अलग होंगे।

आप local-name का उपयोग कर सकते हैं () एक नोड के नाम को पुनः प्राप्त करने के लिए:

  col1.value चुनें ('स्थानीय-नाम (।)', 'Varchar (max)') + '|' + Col1.value ('(./ पुराना) [1]', 'varchar (अधिकतम)') + '|' + Col1.value ('(। / New) [1]', 'varchar (max)') @ x.nodes से '' ^ '(' ​​/ पंक्ति / * ') टीबीएल (col1) के रूप में - & gt; आईडी || 2151 ^ नाम || टेस्ट ^ राशि || 62 ^  


No comments:

Post a Comment