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

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

Este artículo tiene como objetivo ayudarlo a comprender la DIFFERENCE() función, que es una función T-SQL disponible en SQL Server, Azure, etc.

La clave para entender la DIFFERENCE() función es entender cómo funciona Soundex (o en el contexto de SQL Server, cómo SOUNDEX() funciona la función). Esto se debe a que la DIFFERENCE() La función devuelve la diferencia entre los valores de Soundex entre dos cadenas.

Un valor de Soundex tiene cuatro caracteres. Si dos palabras suenan igual, compartirán el mismo valor Soundex de cuatro caracteres. Si suenan similares (pero no iguales), sus valores de Soundex pueden compartir algunos caracteres, pero no todos. Por ejemplo, sus valores Soundex pueden tener dos caracteres iguales y dos diferentes. Si dos palabras suenan completamente diferentes, ninguno de los caracteres en sus respectivos valores Soundex será el mismo.

La DIFFERENCE() la función devuelve un valor que oscila entre 0 hasta 4 . Este valor representa el número de caracteres en los valores de Soundex que son iguales. 0 indica similitud débil o nula, y 4 indica una gran similitud o los mismos valores.

Sintaxis

Primero, aquí está la sintaxis:

DIFFERENCE ( character_expression , character_expression )

Como se indicó, esta función acepta dos argumentos. Se comparan los códigos Soundex de cada expresión de carácter y se devuelve el resultado.

Ejemplo:coincidencia exacta

Aquí hay un ejemplo de lo que sucede cuando ambas cuerdas suenan igual (es decir, tienen el mismo valor de Soundex):

SELECT DIFFERENCE('Two','Too');

Resultado:

4

El resultado es 4 , que es el valor más alto posible. Esto significa que hay una gran similitud entre las dos cadenas (en lo que respecta a sus valores de Soundex).

Si te preguntas dónde está el número 4 vino, eche un vistazo al siguiente código:

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

Resultado:

Two   Too 
----  ----
T000  T000

En este ejemplo, SOUNDEX() La función se utiliza para devolver los códigos Soundex para cada palabra. Resulta que ambas palabras tienen los mismos códigos Soundex (T000 ). Y debido a que los cuatro caracteres de los códigos Soundex son iguales, DIFFERENCE() devuelve 4 .

Ejemplo:baja similitud

Aquí hay un ejemplo de cómo funciona cuando las cadenas tienen una similitud menor:

SELECT DIFFERENCE('Tea','Coffee');

Resultado:

2

El resultado es 2 , que está en el medio. Las cuerdas no suenan exactamente igual, pero tienen algunas similitudes.

Y como en el ejemplo anterior, podemos ver de dónde vino este resultado ejecutando el siguiente código:

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

Resultado:

Tea   Coffee
----  ------
T000  C100

Entonces podemos ver que solo dos de los caracteres de Soundex son iguales entre estas palabras. Por lo tanto la DIFFERENCE() el resultado es 2 .

Ejemplo:sin similitud

Aquí hay un ejemplo de cómo funciona cuando las cadenas tienen una similitud débil o nula:

SELECT DIFFERENCE('Tree','Captivated');

Resultado:

0

El resultado es 0 , lo que significa que las cadenas tienen una similitud muy débil o nula.

Y aquí están los códigos Soundex para estas dos palabras:

SELECT 
    SOUNDEX('Tree') AS Tree,
    SOUNDEX('Captivated') AS Captivated;

Resultado:

Tree  Captivated
----  ----------
T600  C131

Entonces, en este caso, ninguno de los caracteres es el mismo, por lo tanto, DIFFERENCE() resultado de 0 .