sql >> Databáze >  >> RDS >> MariaDB

Jak SOUNDS LIKE funguje v MariaDB

V MariaDB můžete použít SOUNDS LIKE v dotazu, aby odpovídala slovům, která znějí podobně.

Syntaxe

Syntaxe vypadá takto:

expr1 SOUNDS LIKE expr2

Je to stejné jako toto:SOUNDEX(expr1) = SOUNDEX(expr2) .

Soundex je fonetický algoritmus pro indexování jmen podle zvuku, jak se vyslovuje v angličtině. Pokud dvě slova znějí stejně, měla by mít stejný řetězec Soundex. Pokud dvě slova znějí podobně, ale ne úplně stejně, jejich řetězec Soundex může vypadat podobně, ale ne úplně stejně.

Příklad

Zde je základní příklad:

SELECT 'Two' SOUNDS LIKE 'Too';

Výsledek:

+-------------------------+
| 'Two' SOUNDS LIKE 'Too' |
+-------------------------+
|                       1 |
+-------------------------+

V tomto případě znějí obě slova stejně.

Můžeme použít SOUNDEX() funkce pro vrácení řetězce Soundex každého slova:

SELECT 
    SOUNDEX('Two'),
    SOUNDEX('Too');

Výsledek:

+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000           | T000           |
+----------------+----------------+

Struny Soundex jsou identické. To je důvod, proč SOUNDS LIKE vrátil 1 .

Žádná shoda

Zde je příklad dvou slov, která neznějí stejně:

SELECT 'Cat' SOUNDS LIKE 'Dog';

Výsledek:

+-------------------------+
| 'Cat' SOUNDS LIKE 'Dog' |
+-------------------------+
|                       0 |
+-------------------------+

V tomto případě máme 0 , protože slova neznějí stejně. Jejich struny Soundex jsou pravděpodobně jiné. Pojďme to zjistit:

SELECT 
    SOUNDEX('Cat'),
    SOUNDEX('Dog');

Výsledek:

+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300           | D200           |
+----------------+----------------+

Ano. Různé struny Soundex.

Příklad databáze

Zde je příklad použití SOUNDS LIKE v WHERE klauzule databázového dotazu:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';

Výsledek:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

Zde se používá SOUNDEX() funkce pro totéž:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

Výsledek:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

  1. Tip na PostgreSQL

  2. 10 efektivních způsobů, jak být v práci produktivnější

  3. Chyby T-SQL, úskalí a doporučené postupy – poddotazy

  4. Replikace PostgreSQL pro zotavení po havárii