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

Come funziona la funzione SOUNDEX() di SQL Server

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.