Funciones de búsqueda de serie difusa

El lenguaje SQL Netezza Performance Server admite dos funciones de búsqueda de cadenas difusas: Distancia de edición Levenshtein y Distancia de edición Damerau-Levenshtein.

Una búsqueda de serie difusa es una forma de coincidencia de serie aproximada que se basa en algoritmos o técnicas definidas. Estas funciones comparan dos series para mostrar los parecidas o diferentes que son. Estas funciones solo dan soporte a tipos de datos VARCHAR y CHAR (codificación Latin9).

Levenshtein Edit Distance

Sintaxis SQL:
le_dst(<str_expr_1>, <str_expr_2>)

El valor de retorno es un entero (int4) que indica la diferencia entre las dos series de entrada según el cálculo del algoritmo Levenshtein edit distance. Un valor de 0 indica que las series son equivalentes sin modificaciones. El algoritmo calcula el número de modificaciones necesarias para cambiar la primera serie a la segunda serie. Las series distinguen entre mayúsculas y minúsculas. Una modificación es un cambio como el añadido, la supresión, el cambio de mayúsculas o minúsculas o la sustitución de un único carácter.

Por ejemplo:
  • le_dst('sow','show') devuelve un valor de 1 (el añadido del carácter h).
  • le_dst('hello','Hollow') devuelve un valor de 3 (la sustitución de e por o, la conversión a mayúsculas de H y el añadido de w).
Para ignorar las diferencias en mayúsculas y minúsculas, use las funciones upper o lower para cambiar las mayúsculas y minúsculas de las series antes de la comparación. Por ejemplo:
  • select le_dst('Smith','SMYTH') devuelve un valor de 4 (tres cambios a letra mayúscula y la sustitución de la letra i por la letra Y).
  • select le_dst(upper('Smith'),'SMYTH') devuelve un valor de 1 (la sustitución de la letra I por la letra Y).

Damerau-Levenshtein edit distance

Sintaxis SQL:
dle_dst (<str_expr_1>, <str_expr_2>)
El valor que se devuelve indica la diferencia entre las dos series de entrada según el cálculo del algoritmo Damerau-Levenshtein Edit Distance. Es similar al algoritmo Levenshtein:
  • Una modificación es un cambio como el añadido, la supresión, el cambio de mayúsculas o minúsculas o la sustitución de un único carácter.
  • El valor de retorno es un entero (int4) que indica el número de modificaciones necesarias para cambiar la primera serie a la segunda serie.
  • Un valor de 0 indica que las series son equivalentes sin modificaciones.
  • Las comparaciones de las series distinguen entre mayúsculas y minúsculas.
Sin embargo, en el algoritmo Damerau-Levenshtein, la transposición de caracteres contiguos cuentan como una sola modificación y no como dos modificaciones. Por ejemplo:
  • le_dst('two','tow') devuelve un valor de 2 (cambio de la w por o y de la o por w).
  • dle_dst('two','tow') devuelve un valor de 1 (transposición de la w por la o).