sql >> Base de Datos >  >> RDS >> Mysql

MySQL, REGEXP - Encuentra palabras que contienen solo las siguientes letras exactas

El problema aquí es que está comprobando la presencia de l dos veces. Eso es lo mismo que... "Contiene un l . Sí, todavía contiene una l ." No está buscando dos de ellos. Aquí hay una alternativa...

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'

Esto debería coincidir con todas las palabras que contengan una v , dos l 's, una e , un o , y una y .

Entonces, cada dos veces que aparezca la misma letra, simplemente agregue otra .*letra a la consulta. Por ejemplo, lullaby necesita la siguiente consulta:

    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'

Mira cómo agrego 3 *.l porque hay 3 ocurrencias de l en la palabra lullaby .

Lo mismo también se puede lograr con LIKE en lugar de REGEXP . Aquí hay una consulta equivalente a la pregunta original...

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