Soundex è un algoritmo fonetico per l'indicizzazione dei nomi in base al suono, pronunciato in inglese. È stato sviluppato e brevettato nel 1918 e nel 1922.
Una delle funzioni disponibili in SQL Server è SOUNDEX()
funzione, che restituisce il codice Soundex per una determinata stringa.
Sintassi
La sintassi è questa:
SOUNDEX ( character_expression )
Dove character_expression
è la parola o la stringa per cui vuoi il codice Soundex. Può essere una costante, una variabile o una colonna.
Il SOUNDEX()
la funzione è sensibile alle regole di confronto e le funzioni stringa possono essere nidificate.
Il codice Soundex
Come accennato, il SOUNDEX()
la funzione restituisce il codice Soundex per la stringa data. Il codice Soundex è un codice di quattro caratteri basato su come suona la corda quando viene pronunciata. Ecco un esempio di codice Soundex:
S600
Ecco come viene costruito un codice Soundex:
- Il primo carattere del codice è il primo carattere della stringa, convertito in maiuscolo. Quindi, nell'esempio sopra, sappiamo che la stringa inizia con la lettera S (minuscola o maiuscola).
- I caratteri dal secondo al quarto del codice sono numeri che rappresentano le lettere nell'espressione.
- Le lettere A, E, I, O, U, H, W e Y vengono ignorate a meno che non siano la prima lettera della stringa.
- Gli zeri vengono aggiunti alla fine, se necessario, per produrre un codice di quattro caratteri.
Esempio
Ecco un esempio di recupero della stringa Soundex da una stringa:
SELECT SOUNDEX('Sure');
Risultato:
S600
Quindi possiamo vedere che la parola Sure
ha un codice Soundex di S600
.
Esempio di due parole corrispondenti
Ecco un esempio di dove due parole condividono lo stesso codice Soundex (perché suonano allo stesso modo):
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Risultato:
Sure Shore ---- ----- S600 S600
Ecco alcuni esempi di corrispondenza più esatti:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Risultato:
Dam Damn Too Two ---- ---- ---- ---- D500 D500 T000 T000
Esempio di parole che non corrispondono
Ecco un esempio in cui due parole non suonano allo stesso modo e, quindi, hanno codici Soundex diversi:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Risultato:
Water Coffee ----- ------ W360 C100
Parole con ortografia diversa
Alcune parole hanno un'ortografia diversa a seconda del paese di provenienza. Tali parole condivideranno lo stesso codice Soundex:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Risultato:
Flavor Flavour ------ ------- F416 F416
Stesso suono, codice Soundex diverso
A volte, due parole suonano allo stesso modo, ma hanno codici Soundex diversi. Il motivo più comune è che iniziano con una lettera diversa (si usa una lettera muta). Come accennato, il codice Soundex inizia con la prima lettera della stringa (convertita in maiuscolo). Pertanto, se hai due parole che si pronunciano esattamente allo stesso modo, ma iniziano con una lettera diversa, avranno un codice Soundex diverso.
Ecco alcuni esempi:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Risultato:
Hole Whole Our Hour ---- ----- ---- ---- H400 W400 O600 H600
Le coppie in questo esempio hanno codici Soundex diversi solo perché la loro prima lettera è diversa.