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.