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

MySQL एक्सएमएल क्वेरी

आपकी समस्या के समाधान के लिए numbers . के उपयोग की आवश्यकता होगी तालिका:पूर्णांकों की एक तालिका, 1,2,3,.... कुछ उचित मान तक, मान लीजिए 1024।

फिर आप स्ट्रिंग वॉकिंग का उपयोग करेंगे समस्या को हल करने के लिए।

यहां numbers के लिए CREATE TABLE स्टेटमेंट दिया गया है टेबल:

CREATE TABLE numbers (
  `n` smallint unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`n`)
)
;
INSERT INTO numbers VALUES (NULL);
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;

ऊपर दिए गए मान 1..1024

. से भरे हुए हैं

और अब प्रश्न:

SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(ExtractValue(@XML, '/As/A/B'), ' ', n), ' ', -1) AS value
FROM
  numbers
WHERE
  n BETWEEN 1 AND ExtractValue(@XML, 'count(/As/A/B)')
;


+-------+
| value |
+-------+
| Chan  |
| Shey  |
| Bob   |
+-------+
3 rows in set (0.02 sec)

हम ExtractValue(@XML, 'count(/As/A/B)') का उपयोग करते हैं मान प्राप्त करने के लिए 3 -- मिलान करने वाले XML तत्वों की संख्या.

नंबर 1, 2, 3 से चलते हुए, हम CHAN SHEY BOB टेक्स्ट से टोकन #1, टोकन #2, टोकन #3 निकालते हैं। , अंतरिक्ष के अनुसार विभाजित करना।

नोट:

  • ExtractXML सीमांकित स्थान को लौटाता है। लेकिन अगर लौटाए गए टेक्स्ट में कोई जगह है - नहीं जाना। यह परिसीमन रिक्त स्थान से अप्रभेद्य होगा।

  • संख्या तालिका और फ्लाई पर नंबर जेनरेट करें . मैं इसके खिलाफ सलाह देता हूं - यह बहुत अधिक उपरि पैदा करेगा। 1024 पंक्ति संख्या तालिका होना हमेशा अच्छा होता है।

शुभकामनाएँ!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विदेशी कुंजी के रूप में समग्र प्राथमिक कुंजी का प्रयोग करें

  2. MySQL में केवल डुप्लिकेट रिकॉर्ड चुनें और प्रदर्शित करें

  3. बड़ी तालिका से डुप्लिकेट हटाना

  4. डिफ़ॉल्ट CURDATE () के साथ MySQL DATE फ़ील्ड। दिनांक समय नहीं

  5. MySQL सर्वर का समय क्षेत्र कैसे बदलें?