Проблемът тук е, че проверявате за наличието на l
два пъти. Това е същото като... „Той съдържа l
. Да, все още съдържа l
." Това не е проверка за две от тях. Ето алтернатива...
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'
Това трябва да съответства на всички думи, съдържащи v
, две l
's, e
, o
и y
.
Така че, всяко друго появяване на същата буква, просто добавете друга .*буква към заявката. Например lullaby
се нуждае от следната заявка:
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'
Вижте как добавям 3 *.l
защото има 3 срещания на l
в думата lullaby
.
Същото нещо може да се постигне и с LIKE
вместо REGEXP
. Ето еквивалентна заявка за оригиналния въпрос...
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%'