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

एक क्षेत्र में कीवर्ड के खिलाफ वाक्य मिलान करने के लिए mysql क्वेरी

ऐसा करने का एक तरीका 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)[[:>:]]' ), लेकिन जब आपके पास बहुवचन होंगे ('सेब' '[वर्डबाउंडरी]सेब [वर्डबाउंडरी]' से मेल नहीं खाएगा) तो यह मिलान खराब कर देगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:BEGIN&COMMIT के साथ एक ही क्वेरी में एकाधिक तालिकाओं में सम्मिलित करें

  2. MySQL में सेलेक्ट स्टेटमेंट का उपयोग करके टेबल नाम प्राप्त करें

  3. क्या आपको उनके बचने के लिए तैयार बयानों का उपयोग करना चाहिए?

  4. MySQL कई से कई एकल पंक्तियों में शामिल होता है

  5. अनेक-से-अनेक संबंध INSERT