sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje funkce SQL Server SOUNDEX()

Soundex je fonetický algoritmus pro indexování jmen podle zvuku, jak se vyslovuje v angličtině. Byl vyvinut a patentován v letech 1918 a 1922.

Jednou z funkcí dostupných na serveru SQL je SOUNDEX() funkce, která vrací kód Soundex pro daný řetězec.

Syntaxe

Syntaxe vypadá takto:

SOUNDEX ( character_expression )

Kde character_expression je slovo nebo řetězec, pro který chcete mít kód Soundex. Může to být konstanta, proměnná nebo sloupec.

SOUNDEX() Funkce je citlivá na řazení a řetězcové funkce mohou být vnořeny.

Kód Soundex

Jak již bylo zmíněno, SOUNDEX() Funkce vrací Soundex kód pro daný řetězec. Kód Soundex je čtyřmístný kód, který je založen na tom, jak řetězec zní při vyslovení. Zde je příklad kódu Soundex:

S600

Zde je návod, jak je vytvořen kód Soundex:

  • První znak kódu je první znak řetězce převedený na velká písmena. Ve výše uvedeném příkladu tedy víme, že řetězec začíná písmenem S (buď malým nebo velkým).
  • Druhý až čtvrtý znak kódu jsou čísla, která představují písmena ve výrazu.
  • Písmena A, E, I, O, U, H, W a Y jsou ignorována, pokud nejsou prvním písmenem řetězce.
  • Nuly jsou přidány na konec, pokud je to nutné pro vytvoření čtyřznakového kódu.

Příklad

Zde je příklad načtení řetězce Soundex z řetězce:

SELECT SOUNDEX('Sure');

Výsledek:

S600

Vidíme tedy, že slovo Sure má Soundex kód S600 .

Příklad dvou shodných slov

Zde je příklad, kdy dvě slova sdílejí stejný kód Soundex (protože znějí stejně):

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 slov, která se neshodují

Zde je příklad, kdy dvě slova neznějí stejně, a proto mají různé kódy Soundex:

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Výsledek:

Water  Coffee
-----  ------
W360   C100

Slova s ​​různým pravopisem

Některá slova mají jiný pravopis v závislosti na zemi, ze které pocházíte. Taková slova budou sdílet stejný kód Soundex:

SELECT 
  SOUNDEX('Flavor') AS 'Flavor',
  SOUNDEX('Flavour') AS 'Flavour';

Výsledek:

Flavor  Flavour
------  -------
F416    F416

Stejný zvuk, jiný kód Soundex

Někdy znějí dvě slova stejně, ale mají různé kódy Soundex. Nejčastějším důvodem je to, že začínají jiným písmenem (jeden používá tiché písmeno). Jak již bylo zmíněno, kód Soundex začíná prvním písmenem řetězce (převedeno na velká písmena). Pokud tedy máte dvě slova, která se vyslovují úplně stejně, ale začínají jiným písmenem, budou mít jiný kód 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é kódy Soundex pouze proto, že jejich první písmeno je odlišné.


  1. Kdy použít zděděné tabulky v PostgreSQL?

  2. Vložit blob do databáze Oracle pomocí C#

  3. Jak počítat položky v čárkami odděleném seznamu MySQL

  4. Rozdíl mezi numerickou, plovoucí a desítkovou v SQL Server