यह उत्तर अप्रचलित है। 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 अनुक्रमणिका का शोषण नहीं कर सकता। यदि आपके पास अपनी तालिका को पहले से निकाले गए आईडी कॉलम के साथ लोड करने का विकल्प है, तो आपकी तालिका के बड़े होने पर आपको खोजना बेहतर होगा।