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

मैसकल रेगुलर एक्सप्रेशन बिना किसी दोहराए जाने वाले वर्णों के साथ खोज करता है

चूंकि MySQL बैक-रेफरेंसिंग कैप्चरिंग समूहों का समर्थन नहीं करता है, इसलिए (\w).*\1 का विशिष्ट समाधान काम नहीं करेगा। इसका मतलब यह है कि दिए गए किसी भी समाधान के लिए सभी संभावित युगलों की गणना करने की आवश्यकता होगी। इसके अलावा, जहां तक ​​मैं बता सकता हूं कि बैक-रेफरेंस आगे-पीछे या लुक-बैक में मान्य नहीं हैं, और आगे-पीछे और लुक-बैक MySQL में समर्थित नहीं हैं।

हालाँकि, आप इसे दो भावों में विभाजित कर सकते हैं, और निम्न क्वेरी का उपयोग कर सकते हैं:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,6}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N.*?N'

बहुत सुंदर नहीं है, लेकिन यह काम करता है और यह काफी कुशल भी होना चाहिए।

दोहराए गए वर्णों की एक निर्धारित सीमा का समर्थन करने के लिए, अपनी द्वितीयक अभिव्यक्ति के लिए निम्न पैटर्न का उपयोग करें:

A(.*?A){X,}

जहां A आपका चरित्र है और X कितनी बार इसकी अनुमति है।

तो अगर आप एक और N जोड़ रहे हैं आपकी स्ट्रिंग SEPIANN . के लिए (कुल 2 N . के लिए s), आपकी क्वेरी बन जाएगी:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,7}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N(.*?N){2}'


  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 डेटाटाइम MySQL संस्करण 5.6 . में 0000-00-00 00:00:00 हो जाता है

  2. चेकबॉक्स के माध्यम से डेटाबेस प्रविष्टियों को हटाना

  3. उपयोगकर्ता रूट के लिए प्रवेश निषेध - मैक ओएस पर mysql

  4. `log_slow_queries` `my.cnf` को क्यों तोड़ती है?

  5. MySQL सिंगल कोट इंसर्शन एरर