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
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.
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).
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
dle_dst (<str_expr_1>, <str_expr_2>)
- 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.
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).