sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer SQL Server SOUNDEX()-funktionen

Soundex er en fonetisk algoritme til at indeksere navne efter lyd, som udtales på engelsk. Det blev udviklet og patenteret i 1918 og 1922.

En af de tilgængelige funktioner i SQL Server er SOUNDEX() funktion, som returnerer Soundex-koden for en given streng.

Syntaks

Syntaksen ser sådan ud:

SOUNDEX ( character_expression )

Hvor character_expression er det ord eller den streng, som du vil have Soundex-koden til. Dette kan være en konstant, variabel eller kolonne.

SOUNDEX() funktionen er sorteringsfølsom, og strengfunktioner kan indlejres.

Soundex-koden

Som nævnt er SOUNDEX() funktion returnerer Soundex-koden for den givne streng. Soundex-koden er en kode på fire tegn, der er baseret på, hvordan strengen lyder, når den bliver talt. Her er et eksempel på en Soundex-kode:

S600

Sådan er en Soundex-kode opbygget:

  • Det første tegn i koden er det første tegn i strengen, konverteret til store bogstaver. Så i ovenstående eksempel ved vi, at strengen starter med bogstavet S (enten med små eller store bogstaver).
  • Det andet til det fjerde tegn i koden er tal, der repræsenterer bogstaverne i udtrykket.
  • Bogstavene A, E, I, O, U, H, W og Y ignoreres, medmindre de er det første bogstav i strengen.
  • Nuller tilføjes i slutningen, hvis det er nødvendigt for at producere en kode på fire tegn.

Eksempel

Her er et eksempel på at hente Soundex-strengen fra en streng:

SELECT SOUNDEX('Sure');

Resultat:

S600

Så vi kan se, at ordet Sure har en Soundex-kode på S600 .

Eksempel på to matchende ord

Her er et eksempel på, hvor to ord deler den samme Soundex-kode (fordi de lyder ens):

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Resultat:

Sure  Shore
----  -----
S600  S600

Her er nogle eksempler på mere eksakt match:

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Resultat:

Dam   Damn  Too   Two 
----  ----  ----  ----
D500  D500  T000  T000

Eksempel på ord, der ikke matcher

Her er et eksempel på, hvor to ord ikke lyder ens, og derfor har de forskellige Soundex-koder:

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

Resultat:

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

Ord med forskellige stavemåder

Nogle ord har forskellige stavemåder afhængigt af hvilket land du kommer fra. Sådanne ord vil dele den samme Soundex-kode:

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

Resultat:

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

Samme lyd, anden Soundex-kode

Nogle gange lyder to ord ens, men de har forskellige Soundex-koder. Den mest almindelige årsag til dette er, at de starter med et andet bogstav (man bruger et tavst bogstav). Som nævnt starter Soundex-koden med det første bogstav i strengen (konverteret til store bogstaver). Derfor, hvis du har to ord, der udtales nøjagtigt ens, men de starter med et andet bogstav, vil de have en anden Soundex-kode.

Her er nogle eksempler:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Resultat:

Hole  Whole  Our   Hour
----  -----  ----  ----
H400  W400   O600  H600

Parrene i dette eksempel har forskellige Soundex-koder, udelukkende fordi deres første bogstav er forskelligt.


  1. ændre tabel omdøb kolonne i Oracle database

  2. DROP TABEL HVIS FINNES i SQLite

  3. Hvordan kan jeg indstille en String[]-parameter til en indbygget forespørgsel?

  4. 3 måder at få en kolonnes datatype i SQL Server (T-SQL)