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 | +------------+