sql >> Database >  >> RDS >> Mysql

MySQL, REGEXP - Vind woorden die alleen de volgende exacte letters bevatten

Het probleem hier is dat je controleert op de aanwezigheid van l tweemaal. Dat is hetzelfde als... "Het bevat een l . Yep, bevat nog steeds een l ." Het controleert niet op twee van hen. Hier is een alternatief...

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'

Dit moet overeenkomen met alle woorden met een v , twee l 's, een e , een o , en een y .

Dus elke keer dat dezelfde letter voorkomt, voegt u gewoon een andere .*letter toe aan de zoekopdracht. Bijvoorbeeld lullaby heeft de volgende vraag nodig:

    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'

Zie hoe ik 3 *.l . toevoeg omdat er 3 keer voorkomen dat l . voorkomt in het woord lullaby .

Hetzelfde kan ook worden bereikt met LIKE in plaats van REGEXP . Hier is een equivalente vraag voor de oorspronkelijke vraag...

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%'


  1. Vensterfuncties en meer lokale aggregatie

  2. Hoe kan ik met PDO een lijst met MySQL-databases in PHP krijgen?

  3. Self Joins in Mysql... Hoe kan ik zelf deelnemen aan deze tafel?

  4. Gebruik ik JDBC Connection Pooling?