Jednou z mnoha funkcí řetězce MySQL je SOUNDEX() funkce. Tato funkce vrací řetězec Soundex z daného řetězce. 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ě.
Tento článek obsahuje spoustu příkladů Soundex, které demonstrují, jak funguje SOUNDEX() funkce funguje v MySQL.
Syntaxe
Nejprve se podívejme na syntaxi:
SOUNDEX(str)
Kde str je řetězec, ke kterému potřebujete řetězec Soundex.
Příklad
Zde je příklad načtení řetězce Soundex z řetězce:
SELECT SOUNDEX('Sure'); Výsledek:
+-----------------+
| SOUNDEX('Sure') |
+-----------------+
| S600 |
+-----------------+
V tomto případě tedy slovo Sure má řetězec Soundex S600 .
Příklad – Přesná shoda
Zde je příklad, kdy dvě slova znějí stejně (nebo velmi podobně), a proto sdílejí stejný řetězec Soundex:
SELECT
SOUNDEX('Sure') AS Sure,
SOUNDEX('Shore') AS Shore; Výsledek:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Zde jsou některé další příklady přesné shody:
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two; Výsledek:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Příklad – Neshoda
Zde je příklad, kdy dvě slova neznějí stejně, a proto mají různé řetězce Soundex:
SELECT
SOUNDEX('Water') AS Water,
SOUNDEX('Coffee') AS Coffee; Výsledek:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Jak vidíte, řetězec Soundex je pro tato dvě slova zcela odlišný.
Příklad – Různé pravopisy
Zde je příklad dvou slov, která mají odlišný pravopis (v závislosti na zemi, ze které pocházíte):
SELECT
SOUNDEX('Color') AS 'Color',
SOUNDEX('Colour') AS 'Colour'; Výsledek:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Můžeme tedy vidět, že taková slova budou sdílet stejný řetězec Soundex (pokud se vyslovují stejným způsobem).
Příklad – stejný zvuk, jiný zvuk
Existují případy, kdy slova znějí stejně, ale mají různé řetězce Soundex. Nejčastějším důvodem je to, že začínají na jiné písmeno, z nichž jedno je tiché písmeno. Možná jste si všimli z předchozích příkladů, že řetězec Soundex začíná prvním písmenem řetězce.
Pokud tedy máte dvě slova, která se vyslovují úplně stejně, ale začínají jiným písmenem, budou mít jiný řetězec Soundex.
Zde je několik příkladů:
SELECT
SOUNDEX('Hole') AS 'Hole',
SOUNDEX('Whole') AS 'Whole',
SOUNDEX('Our') AS Our,
SOUNDEX('Hour') AS Hour; Výsledek:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Páry v tomto příkladu mají různé řetězce Soundex pouze proto, že jejich první písmeno je odlišné.
Příklad – Soundex v databázovém dotazu
Zde je příklad použití SOUNDEX() v databázovém dotazu. V tomto případě hledáme všechny nahrávky, které znějí jako „Ay See Dee Ci“:
SELECT ArtistName
FROM Artists
WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci'); Výsledek:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Takže AC/DC má zřejmě stejný kód Soundex jako Ay See Dee Ci (alespoň při používání MySQL) Pro jistotu zde jsou kódy Soundex pro oba tyto řetězce:
SELECT
SOUNDEX('AC/DC') AS 'AC/DC',
SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci'; Výsledek:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Alternativa:ZNÍ TAK
Alternativní dotaz mohl být vytvořen pomocí SOUNDS LIKE místo SOUNDEX() funkce. Takhle:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Výsledek:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+