sql >> Databáze >  >> RDS >> Mysql

Příklady MySQL SOUNDEX().

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

  1. Jak nastavit znakovou sadu a řazení databáze v MySQL

  2. Jak se mohu připojit k serveru SQL Server pomocí integrovaného zabezpečení s ovladačem JDBC?

  3. Podpora Bool Oracle SQL

  4. Jak mohu změnit existující sloupec jako identitu v PostgreSQL 11.1