Soundex is een fonetisch algoritme voor het indexeren van namen op geluid, zoals uitgesproken in het Engels. Het werd ontwikkeld en gepatenteerd in 1918 en 1922.
Een van de beschikbare functies in SQL Server is de SOUNDEX()
functie, die de Soundex-code voor een gegeven string retourneert.
Syntaxis
De syntaxis gaat als volgt:
SOUNDEX ( character_expression )
Waar character_expression
is het woord of de tekenreeks waarvoor u de Soundex-code wilt hebben. Dit kan een constante, variabele of kolom zijn.
De SOUNDEX()
functie is sorteergevoelig en tekenreeksfuncties kunnen worden genest.
De Soundex-code
Zoals gezegd, de SOUNDEX()
functie retourneert de Soundex-code voor de gegeven string. De Soundex-code is een code van vier tekens die is gebaseerd op hoe de snaar klinkt wanneer deze wordt uitgesproken. Hier is een voorbeeld van een Soundex-code:
S600
Zo wordt een Soundex-code opgebouwd:
- Het eerste teken van de code is het eerste teken van de tekenreeks, geconverteerd naar hoofdletters. Dus in het bovenstaande voorbeeld weten we dat de string begint met de letter S (kleine of hoofdletter).
- Het tweede tot en met het vierde teken van de code zijn cijfers die de letters in de uitdrukking vertegenwoordigen.
- De letters A, E, I, O, U, H, W en Y worden genegeerd, tenzij ze de eerste letter van de tekenreeks zijn.
- Zo nodig worden aan het einde nullen toegevoegd om een code van vier tekens te produceren.
Voorbeeld
Hier is een voorbeeld van het ophalen van de Soundex-string uit een string:
SELECT SOUNDEX('Sure');
Resultaat:
S600
We kunnen dus zien dat het woord Sure
heeft een Soundex-code van S600
.
Voorbeeld van twee overeenkomende woorden
Hier is een voorbeeld van waar twee woorden dezelfde Soundex-code delen (omdat ze hetzelfde klinken):
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Resultaat:
Sure Shore ---- ----- S600 S600
Hier zijn wat meer exacte matchvoorbeelden:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Resultaat:
Dam Damn Too Two ---- ---- ---- ---- D500 D500 T000 T000
Voorbeeld van woorden die niet overeenkomen
Hier is een voorbeeld van waar twee woorden niet hetzelfde klinken en daarom verschillende Soundex-codes hebben:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Resultaat:
Water Coffee ----- ------ W360 C100
Woorden met verschillende spelling
Sommige woorden hebben verschillende spellingen, afhankelijk van het land waar je vandaan komt. Dergelijke woorden delen dezelfde Soundex-code:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Resultaat:
Flavor Flavour ------ ------- F416 F416
Hetzelfde geluid, andere Soundex-code
Soms klinken twee woorden hetzelfde, maar hebben ze verschillende Soundex-codes. De meest voorkomende reden hiervoor is dat ze met een andere letter beginnen (men gebruikt een stille letter). Zoals gezegd begint de Soundex-code met de eerste letter van de tekenreeks (omgezet naar hoofdletters). Als je dus twee woorden hebt die precies hetzelfde worden uitgesproken, maar met een andere letter beginnen, hebben ze een andere Soundex-code.
Hier zijn enkele voorbeelden:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Resultaat:
Hole Whole Our Hour ---- ----- ---- ---- H400 W400 O600 H600
De paren in dit voorbeeld hebben verschillende Soundex-codes, alleen omdat hun eerste letter anders is.