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