Le langage IBM® Netezza SQL
prend en charge deux fonctions de recherche de chaînes correspondantes : la distance d'édition de Levenshtein et la distance
d'édition de Damerau-Levenshtein.
Une recherche de chaîne correspondante est une forme de correspondance
approximative des chaînes à partir de techniques ou d'algorithmes définis. Ces fonctions
comparent deux chaînes pour en montrer les similitudes ou les différences. Ces fonctions
ne prennent en charge que les types de données VARCHAR et CHAR (codage Latin9).
Distance d'édition de Levenshtein
Syntaxe SQL :
le_dst (<expr_chaîne_1>, <expr_chaîne_2>)
La valeur renvoyée est un entier (int4) qui indique en quoi les méthodes de calcul des
deux chaînes en entrée sont différentes conformément à l'algorithme de distance d'édition
de Levenshtein. La valeur 0 indique que les chaînes sont équivalentes sans aucune
modification. L'algorithme calcule le nombre de modifications à apporter à une chaîne pour la remplacer par une autre chaîne.
Les chaînes sont sensibles à la casse. Une modification est un changement tel que l'ajout, la suppression, la substitution d'un seul caractère ou encore la modification de sa casse.
Par exemple :
- le_dst('sow','show') renvoie la valeur 1 (ajout du caractère h).
- le_dst('hello','Hollow') renvoie la valeur 3 (substitution du e par o, mise en majuscule du H et ajout de w).
Pour
ignorer les différences de casse, utilisez la fonction
upper ou
lower afin de modifier la casse des chaînes avant la comparaison. Par exemple :
- select le_dst('Smith','SMYTH') renvoie la valeur 4
(trois remplacements de minuscules par des majuscules et la substitution de la lettre i par la lettre y).
- select le_dst(upper('Smith'),'SMYTH') renvoie la valeur 1 (substitution du I par un Y).
Distance d'édition de Damerau-Levenshtein
Syntaxe SQL :
dle_dst (<expr_chaîne_1>, <expr_chaîne_2>)
La valeur renvoyée indique en quoi les méthodes de calcul des deux chaînes en entrée sont différentes
conformément à l'algorithme de distance d'édition de Damerau-Levenshtein. Tout comme l'algorithme de Levenshtein :
- Une modification est un changement tel que l'ajout, la suppression, la substitution d'un seul caractère ou encore la modification de sa casse.
- La valeur renvoyée est un entier (int4) qui indique le nombre de
modifications requises pour remplacer la première chaîne par la seconde.
- La valeur 0 indique que les chaînes sont équivalentes sans aucune
modification.
- Les comparaisons de chaînes sont sensibles à la casse.
Toutefois, dans l'algorithme de Damerau-Levenshtein, la transposition
des caractères voisins compte comme une même modification et non pas deux. Par exemple :
- le_dst('two','tow') renvoie la valeur 2 (remplacement du w par un o et du o par un w).
- dle_dst('two','tow') renvoie la valeur 1 (transposition du w et du o).