Condividi tramite


SOUNDEX (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce un codice di quattro caratteri (SOUNDEX) per valutare la similarità di due stringhe.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SOUNDEX ( character_expression )  

Argomenti

character_expression
Espressione alfanumerica di dati di tipo carattere. character_expression può essere una costante, una variabile o una colonna.

Tipi restituiti

varchar

Osservazioni:

Tramite SOUNDEX una stringa alfanumerica viene convertita in un codice a quattro caratteri basato sul risultato della pronuncia della stringa in inglese. Il primo carattere del codice è il primo carattere di character_expression, convertito in maiuscolo. I caratteri compresi tra il secondo e il quarto del codice sono numeri che rappresentano le lettere dell'espressione. Le lettere A, E, I, O, U, H, W e Y vengono ignorate, a meno che non rappresentino la prima lettera della stringa. Se necessario per generare un codice di quattro caratteri, vengono aggiunti gli zeri finali. Per altre informazioni sul codice SOUNDEX, vedere The Soundex Indexing System (Sistema di indicizzazione di Soundex).

È possibile confrontare i codici SOUNDEX di stringhe diverse per vedere le pronunce simili della stringa. Tramite la funzione DIFFERENCE viene eseguito SOUNDEX in due stringhe e viene restituito un Integer che rappresenta la similitudine dei codici SOUNDEX per le stringhe in questione.

SOUNDEX è sensibile alle regole di confronto. Le funzioni stringa possono essere nidificate.

Compatibilità di SOUNDEX

Nelle versioni precedenti di SQL Server, la funzione SOUNDEX viene applicata a un subset di regole SOUNDEX. Con il livello di compatibilità del database 110 o superiore, tramite SQL Server viene applicato un set più completo di regole.

Dopo aver effettuato l'aggiornamento al livello di compatibilità 110 o superiore, potrebbe essere necessario ricompilare gli indici, gli heap o i vincoli CHECK in cui viene utilizzata la funzione SOUNDEX.

  • In un heap contenente una colonna calcolata persistente definita con la funzione SOUNDEX non possono essere eseguite query finché l'heap non viene ricompilato eseguendo l'istruzione ALTER TABLE <table> REBUILD.

  • I vincoli CHECK definiti con la funzione SOUNDEX vengono disabilitati durante l'aggiornamento. Per abilitare il vincolo, eseguire l'istruzione ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL.

  • Negli indici (viste indicizzate incluse) contenenti una colonna calcolata persistente definita con la funzione SOUNDEX non possono essere eseguite query finché l'indice non viene ricompilato eseguendo l'istruzione ALTER INDEX ALL ON <object> REBUILD.

Esempi

Nell'esempio seguente viene illustrata la funzione SOUNDEX e la funzione DIFFERENCE correlata. Nel primo esempio vengono restituiti i valori SOUNDEX standard per tutte le consonanti. Per le stringhe SOUNDEX e SmithSmythe restituisce lo stesso risultato in quanto le vocali, la lettera y, le doppie e la lettera h non vengono incluse.

-- Using SOUNDEX  
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');  

Il set di risultati è il seguente. Valido per le regole di confronto Latin1_General.

S530  S530    

La funzione DIFFERENCE valuta la differenza tra i risultati ottenuti con il modello SOUNDEX. Nell'esempio seguente sono illustrate due stringhe che si differenziano in relazione alle vocali. Il valore restituito è 4 (differenza minima).

-- Using DIFFERENCE  
SELECT DIFFERENCE('Smithers', 'Smythers');  
GO  

Il set di risultati è il seguente. Valido per le regole di confronto Latin1_General.

4             

Nell'esempio seguente le stringhe sono diverse a livello consonantico. La differenza restituita sarà pertanto 2, vale a dire la differenza maggiore.

SELECT DIFFERENCE('Anothers', 'Brothers');  
GO  

Il set di risultati è il seguente. Valido per le regole di confronto Latin1_General.

2             

Vedi anche

DIFFERENCE (Transact-SQL)
Funzioni per i valori stringa (Transact-SQL)
Livello di compatibilità ALTER DATABASE (Transact-SQL)