sql >> Databasteknik >  >> RDS >> Sqlserver

Hur SQL Server SOUNDEX()-funktionen fungerar

Soundex är en fonetisk algoritm för att indexera namn efter ljud, som uttalas på engelska. Den utvecklades och patenterades 1918 och 1922.

En av funktionerna som är tillgängliga i SQL Server är SOUNDEX() funktion, som returnerar Soundex-koden för en given sträng.

Syntax

Syntaxen ser ut så här:

SOUNDEX ( character_expression )

Där character_expression är ordet eller strängen som du vill ha Soundex-koden för. Detta kan vara en konstant, variabel eller kolumn.

SOUNDEX() funktionen är sorteringskänslig och strängfunktioner kan kapslas.

Soundex-koden

Som nämnts, SOUNDEX() funktion returnerar Soundex-koden för den givna strängen. Soundex-koden är en kod på fyra tecken som är baserad på hur strängen låter när den läses upp. Här är ett exempel på en Soundex-kod:

S600

Så här är en Soundex-kod uppbyggd:

  • Det första tecknet i koden är det första tecknet i strängen, omvandlat till versaler. Så i exemplet ovan vet vi att strängen börjar med bokstaven S (antingen gemen eller versal).
  • Det andra till det fjärde tecknet i koden är siffror som representerar bokstäverna i uttrycket.
  • Bokstäverna A, E, I, O, U, H, W och Y ignoreras om de inte är den första bokstaven i strängen.
  • Nollor läggs till i slutet om det behövs för att skapa en kod med fyra tecken.

Exempel

Här är ett exempel på att hämta Soundex-strängen från en sträng:

SELECT SOUNDEX('Sure');

Resultat:

S600

Så vi kan se att ordet Sure har Soundex-koden S600 .

Exempel på två matchande ord

Här är ett exempel på där två ord delar samma Soundex-kod (eftersom de låter likadant):

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

Resultat:

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

Här är några exempel på mer exakt matchning:

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

Exempel på ord som inte stämmer överens

Här är ett exempel på där två ord inte låter likadana, och därför har de olika Soundex-koder:

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

Resultat:

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

Ord med olika stavningar

Vissa ord har olika stavningar beroende på vilket land du kommer ifrån. Sådana ord kommer att dela samma Soundex-kod:

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

Resultat:

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

Samma ljud, annan Soundex-kod

Ibland låter två ord likadant, men de har olika Soundex-koder. Den vanligaste orsaken till detta är att de börjar med en annan bokstav (en använder en tyst bokstav). Soundex-koden börjar som sagt med den första bokstaven i strängen (konverterad till versaler). Därför, om du har två ord som uttalas exakt lika, men de börjar med en annan bokstav, kommer de att ha en annan Soundex-kod.

Här är några exempel:

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

Paren i det här exemplet har olika Soundex-koder enbart för att deras första bokstav är annorlunda.


  1. SQLite returnerade en felkod på 14

  2. hur man skapar ISO-8601 gregoriansk datumtabell i postgres

  3. Få antalet misslyckade inloggningsförsök för en inloggning på grund av ett felaktigt lösenord i SQL Server (T-SQL)

  4. Använder jag JDBC Connection Pooling?