SOUNDEX (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Devuelve un código de cuatro caracteres (SOUNDEX) para evaluar la semejanza de dos cadenas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SOUNDEX ( character_expression )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

character_expression
Es una expresión alfanumérica de datos de caracteres. character_expression puede ser una constante, una variable o una columna.

Tipos de valor devuelto

varchar

Observaciones

SOUNDEX convierte una cadena alfanumérica en un código de cuatro caracteres que se basa en cómo suena la cadena cuando se pronuncia en inglés. El primer carácter del código es el primer carácter de character_expression, convertido a mayúsculas. Los caracteres segundo a cuarto del código son números que representan las letras de la expresión. Las letras A, E, I, O, U, H, W e Y se omiten a menos que sean la primera letra de la cadena. Se agregan ceros al final si se necesita crear un código de cuatro caracteres. Para más información sobre el código SOUNDEX, vea The Soundex Indexing System (Sistema de indización Soundex).

Se pueden comparar códigos SOUNDEX de distintas cadenas para ver la similitud de las cadenas cuando se pronuncian. La función DIFFERENCE realiza una operación SOUNDEX en dos cadenas y devuelve un entero que representa la similitud de los códigos SOUNDEX para esas cadenas.

SOUNDEX distingue la intercalación. Las funciones de cadena se pueden anidar.

Compatibilidad con SOUNDEX

En versiones anteriores de SQL Server, la función SOUNDEX aplicaba un subconjunto de las reglas de SOUNDEX. En el nivel de compatibilidad de base de datos 110 o posterior, SQL Server aplica un conjunto de reglas más completo.

Después de actualizar al nivel de compatibilidad 110 o posterior, es posible que tenga que regenerar los índices, los montones o las restricciones CHECK que usan la función SOUNDEX.

  • Un montón que contiene una columna computada persistida definida con SOUNDEX no puede ser consultada hasta que el montón sea reconstruido ejecutando la declaraciónALTER TABLE <table> REBUILD.

  • Las restricciones CHECK definidas con SOUNDEX son deshabilitadas tras una actualización. Para permitir la restricción, ejecute la declaraciónALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL.

  • Los índices (incluyendo las vistas indizadas) que contienen una columna computada persistida definida con SOUNDEX no pueden ser consultados hasta que el índice sea reconstruido ejecutando la declaraciónALTER INDEX ALL ON <object> REBUILD.

Ejemplos

El ejemplo siguiente muestra la función SOUNDEX y la función relacionada DIFFERENCE. En el primer ejemplo se obtienen los valores estándar de SOUNDEX para todas las consonantes. Al usar SOUNDEX para las cadenas Smith y Smythe se obtiene el mismo resultado, ya que todas las vocales, la letra y, las letras duplicadas y la letra h no se incluyen.

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

El conjunto de resultados es el siguiente: Válido para una intercalación Latin1_General.

S530  S530    

La función DIFFERENCE compara la diferencia entre los resultados del modelo SOUNDEX. El siguiente ejemplo muestra dos cadenas que solo difieren en las vocales. La diferencia obtenida es 4, la mínima posible.

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

El conjunto de resultados es el siguiente: Válido para una intercalación Latin1_General.

4             

En el ejemplo siguiente, las cadenas varían en las consonantes; por tanto, la diferencia obtenida es 2, la máxima posible.

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

El conjunto de resultados es el siguiente: Válido para una intercalación Latin1_General.

2             

Consulte también

DIFFERENCE (Transact-SQL)
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]
Nivel de compatibilidad de ALTER DATABASE (Transact-SQL)