ऐसा करने का एक तरीका apple, oranges, pears
. को रूपांतरित करना हो सकता है से apple|oranges|pears
और RLIKE
का उपयोग करें
(अर्थात रेगुलर एक्सप्रेशन) इसके विरुद्ध मिलान करने के लिए।
उदाहरण के लिए, 'जॉन को सेब खाना पसंद है' रेगेक्स 'सेब|नारंगी|नाशपाती' से मेल खाता है।
सबसे पहले, 'सेब, संतरे, नाशपाती' को रेगेक्स रूप में बदलने के लिए, सभी ',' को '|' से बदलें REPLACE
. का उपयोग करके . फिर RLIKE
. का प्रयोग करें मेल खाने वाली कीवर्ड प्रविष्टियों का चयन करने के लिए:
SELECT *
FROM keywords_table
WHERE 'John liked to eat apples' RLIKE REPLACE(keywords,', ','|');
हालाँकि यह आपके अल्पविराम-पृथक्करण के सुसंगत होने पर निर्भर करता है (अर्थात यदि एक पंक्ति है जो apples,oranges
जैसी दिखती है यह REPLACE
. के रूप में काम नहीं करेगा एक अल्पविराम के बाद एक स्थान (आपके उदाहरण पंक्तियों के अनुसार) को प्रतिस्थापित करता है।
मुझे नहीं लगता कि यह बहुत अच्छी तरह बढ़ेगा।
और, यदि आपके पास 'जॉन को अनानास खाना पसंद है' जैसा वाक्य है, तो यह ऊपर की दोनों पंक्तियों से मेल खाएगा (क्योंकि इसमें 'सेब' है)। फिर आप रेगेक्स में शब्द सीमाएँ जोड़ने का प्रयास कर सकते हैं (यानी WHERE $sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]'
), लेकिन जब आपके पास बहुवचन होंगे ('सेब' '[वर्डबाउंडरी]सेब [वर्डबाउंडरी]' से मेल नहीं खाएगा) तो यह मिलान खराब कर देगा।