sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona la función SOUNDEX() de SQL Server

Soundex es un algoritmo fonético para indexar nombres por sonido, como se pronuncia en inglés. Fue desarrollado y patentado en 1918 y 1922.

Una de las funciones disponibles en SQL Server es SOUNDEX() función, que devuelve el código Soundex para una cadena determinada.

Sintaxis

La sintaxis es así:

SOUNDEX ( character_expression )

Donde character_expression es la palabra o cadena para la que desea el código Soundex. Puede ser una constante, una variable o una columna.

El SOUNDEX() La función es sensible a la intercalación y las funciones de cadena se pueden anidar.

El Código Soundex

Como se mencionó, el SOUNDEX() La función devuelve el código Soundex para la cadena dada. El código Soundex es un código de cuatro caracteres que se basa en cómo suena la cuerda cuando se habla. Aquí hay un ejemplo de un código Soundex:

S600

Así es como se construye un código Soundex:

  • El primer carácter del código es el primer carácter de la cadena, convertido a mayúsculas. Entonces, en el ejemplo anterior, sabemos que la cadena comienza con la letra S (ya sea en minúsculas o en 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 ignoran a menos que sean la primera letra de la cadena.
  • Se agregan ceros al final si es necesario para generar un código de cuatro caracteres.

Ejemplo

Aquí hay un ejemplo de cómo recuperar la cadena Soundex de una cadena:

SELECT SOUNDEX('Sure');

Resultado:

S600

Entonces podemos ver que la palabra Sure tiene un código Soundex de S600 .

Ejemplo de dos palabras coincidentes

Este es un ejemplo de dos palabras que comparten el mismo código Soundex (porque suenan igual):

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Resultado:

Sure  Shore
----  -----
S600  S600

Estos son algunos ejemplos de coincidencias más exactas:

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Resultado:

Dam   Damn  Too   Two 
----  ----  ----  ----
D500  D500  T000  T000

Ejemplo de palabras que no coinciden

Este es un ejemplo de dos palabras que no suenan igual y, por lo tanto, tienen diferentes códigos Soundex:

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Resultado:

Water  Coffee
-----  ------
W360   C100

Palabras con diferente ortografía

Algunas palabras tienen diferentes ortografías según el país del que seas. Tales palabras compartirán el mismo código Soundex:

SELECT 
  SOUNDEX('Flavor') AS 'Flavor',
  SOUNDEX('Flavour') AS 'Flavour';

Resultado:

Flavor  Flavour
------  -------
F416    F416

Mismo sonido, diferente código Soundex

A veces, dos palabras suenan igual, pero tienen diferentes códigos Soundex. La razón más común de esto es que comienzan con una letra diferente (uno usa una letra muda). Como se mencionó, el código Soundex comienza con la primera letra de la cadena (convertida a mayúscula). Por lo tanto, si tiene dos palabras que se pronuncian exactamente igual, pero comienzan con una letra diferente, tendrán un código Soundex diferente.

Estos son algunos ejemplos:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Resultado:

Hole  Whole  Our   Hour
----  -----  ----  ----
H400  W400   O600  H600

Los pares en este ejemplo tienen diferentes códigos Soundex únicamente porque su primera letra es diferente.