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

रेगेक्स के साथ किसी फ़ील्ड का हिस्सा चुनना

यह उत्तर अप्रचलित है। MySql के पास बेहतर रेगेक्स समर्थन है।

नहीं, यह कहते हुए दुख की बात है कि MySQL के पास SELECT क्लॉज, केवल WHERE क्लॉज में कॉलम की सामग्री पर रेगेक्स लागू करने का कोई तरीका नहीं है।

लेकिन आप ऐसा करने के लिए सामान्य (गैर-रेगेक्स) स्ट्रिंग मैनिपुलेशन फ़ंक्शंस का उपयोग कर सकते हैं। अगर आपके एम्परसेंड से अलग किए गए पैरामीटर स्ट्रिंग वाले कॉलम का नाम url . है , आप इस ठीक स्ट्रिंग एक्सप्रेशन के साथ आईडी नंबर प्राप्त कर सकते हैं, जो आपका आईडी नंबर ढूंढता है।

  CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)

इसलिए, यदि आप id . की एक सूची चाहते हैं url . से मान table1 . के कॉलम , आप इसका उपयोग कर सकते हैं SELECT क्वेरी।

SELECT CAST(RIGHT(url, LENGTH(url) - 3 - 
                       LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
  FROM table1
 WHERE url REGEXP '&id=[0-9]+'

जैसा कि आप देख सकते हैं कि यह उपयुक्त पंक्तियों का पता लगाने के लिए regexp खोज फ़ंक्शन का उपयोग करता है।

इस बारे में कुछ भी तेज़ नहीं है। Regexp मिलान एक MySQL अनुक्रमणिका का शोषण नहीं कर सकता। यदि आपके पास अपनी तालिका को पहले से निकाले गए आईडी कॉलम के साथ लोड करने का विकल्प है, तो आपकी तालिका के बड़े होने पर आपको खोजना बेहतर होगा।



  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. भारत, PHP, MYSQL, JQUERY में एसटीडी कोड खोजक स्क्रिप्ट

  3. ड्रॉपडाउन php mysql . में Enum मानों की सूची बनाएं

  4. मैं जल्दी से एक MySQL डेटाबेस का नाम कैसे बदलूँ (स्कीमा नाम बदलें)?

  5. Yii2 :विशिष्ट SQL क्वेरी कैसे लिखें?