2010-03-01 7 views
5

मेरे पास एक बहुत ही रोचक कार्य है, जिसे मैं नहीं जानता कि इसे कैसे कार्यान्वित किया जाए।MySQL डेटाबेस तालिका में नियमित अभिव्यक्तियों को संग्रहीत करना और उनके खिलाफ मशीनिंग

मुझे डेटाबेस तालिका में कई नियमित अभिव्यक्तियों को स्टोर करने की आवश्यकता है, और यह पता लगाने में सक्षम होना चाहिए कि उनमें से कौन सा दिए गए स्ट्रिंग से मेल खाता है।

उदाहरण के लिए:

id | regexp 
---|------------- 
1 | ^hello world$ 
2 | ^I have [0-9] flowers& 
3 | ^some other regexp$ 
4 | ^and another (one|regexp)$ 

और मैं जो उन अभिव्यक्ति की स्ट्रिंग "मैं 5 फूल है" से मेल खाता है खोजने की जरूरत है। बेशक मैं चयन कर सकता हूं * तालिका से और PHP में एक-एक करके मिलान करने वाले अभिव्यक्तियों के माध्यम से लूप, लेकिन सर्वर को संभालने के लिए यह भयानक होगा।

क्या मैं इस तालिका को किसी भी तरह से इंडेक्स कर सकता हूं या इस कार्य को संभालने के लिए एक विशेष SQL क्वेरी का उपयोग कर सकता हूं?

मैं किसी भी उत्तर की सराहना करता हूं। धन्यवाद।

उत्तर

11
select * from table where $your_string RLIKE regexp 

mysql regular expressions

+0

धन्यवाद, मैंने पहले RLIKE का उपयोग किया था, लेकिन तर्कों को बदलने के बारे में नहीं सोचा था :) –

+0

इस स्थिति को सर्वोत्तम तरीके से फिट करने के लिए मुझे किस प्रकार की अनुक्रमणिका का उपयोग करना चाहिए? बस regexp कॉलम इंडेक्स? –

+0

आप रोज़ाना कुछ नया सीखते हैं :) –

1
SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`; 

दुर्भाग्य से प्रश्नों कि regexps का उपयोग के साथ अनुक्रमित उपयोग करने के लिए कोई रास्ता नहीं है।

संबंधित मुद्दे