Problém je v tom, že kontrolujete přítomnost l
dvakrát. To je stejné jako... "Obsahuje l
. Ano, stále obsahuje l
." Nekontroluje dva z nich. Zde je 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'
To by mělo odpovídat všem slovům obsahujícím v
, dva l
's, e
, o
a y
.
Takže při každém dalším výskytu stejného písmene stačí k dotazu připojit další písmeno .*. Například lullaby
potřebuje následující dotaz:
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'
Podívejte se, jak přidám 3 *.l
protože existují 3 výskyty l
ve slově lullaby
.
Totéž lze provést pomocí LIKE
místo REGEXP
. Zde je ekvivalentní dotaz pro původní otázku...
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%'