Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL, REGEXP - Finden Sie Wörter, die nur die folgenden genauen Buchstaben enthalten

Das Problem dabei ist, dass Sie auf das Vorhandensein von l prüfen zweimal. Das ist dasselbe wie... "Es enthält ein l . Ja, enthält immer noch ein l ." Es wird nicht nach zweien gesucht. Hier ist eine Alternative...

SELECT word FROM us_6 WHERE
word REGEXP 'v' AND
word REGEXP 'l.*l' AND
word REGEXP 'e' AND
word REGEXP 'o' AND
word REGEXP 'y'

Dies sollte mit allen Wörtern übereinstimmen, die ein v enthalten , zwei l 's, ein e , ein o , und ein y .

Hängen Sie also bei jedem zweiten Vorkommen desselben Buchstabens einfach einen weiteren .*-Buchstaben an die Abfrage an. Beispiel:lullaby benötigt die folgende Abfrage:

    SELECT word FROM us_7 WHERE
    word REGEXP 'l.*l.*l' AND
    word REGEXP 'u' AND
    word REGEXP 'a' AND
    word REGEXP 'b' AND
    word REGEXP 'y'

Sehen Sie, wie ich 3 *.l hinzufüge weil es 3 Vorkommen von l gibt im Wort lullaby .

Dasselbe kann auch mit LIKE erreicht werden statt REGEXP . Hier ist eine äquivalente Abfrage für die ursprüngliche Frage...

SELECT word FROM us_6 WHERE
word LIKE '%v%' AND
word LIKE '%l%l%' AND
word LIKE '%e%' AND
word LIKE '%o%' AND
word LIKE '%y%'