sql >> Databasteknik >  >> RDS >> Mysql

MySQL, REGEXP - Hitta ord som bara innehåller följande exakta bokstäver

Problemet här är att du kontrollerar förekomsten av l dubbelt. Det är samma sak som... "Den innehåller en l . Japp, innehåller fortfarande en l ." Det letar inte efter två av dem. Här är ett alternativ...

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'

Detta bör matcha alla ord som innehåller en v , två l 's, en e , en o och en y .

Så, varannan förekomst av samma bokstav, lägg bara till en annan .*bokstav till frågan. Till exempel lullaby behöver följande fråga:

    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'

Se hur jag lägger till 3 *.l eftersom det finns 3 förekomster av l i ordet lullaby .

Samma sak kan också åstadkommas med LIKE istället för REGEXP . Här är en motsvarande fråga för den ursprungliga frågan...

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. Det går inte att lagra arabiska i MYSQL-databas med PHP

  2. Bästa sättet att hantera att lagra/visa datum i olika tidszoner i PHP?

  3. Finns det en prestandaskillnad mellan HAVING på alias, kontra att inte använda HAVING

  4. Hur sammanfogar jag hela resultatuppsättningar i MySQL?