Funzioni di ricerca di stringhe fuzzy

Il linguaggio SQL di Netezza Performance Server supporta due funzioni di ricerca di stringhe fuzzy: Levenshtein Edit Distance e Damerau-Levenshtein Edit Distance.

La ricerca di stringhe fuzzy è una forma di corrispondenza approssimativa tra stringhe basata su tecniche o algoritmi definiti. Queste funzioni confrontano due stringhe per mostrare quanto siano simili o diverse. Queste funzioni supportano solo i tipi di dati VARCHAR e CHAR (codificaLatin9 ).

Distanza di modifica di Levenshtein

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

Il valore di ritorno è un numero interoint4) che indica la differenza tra le due stringhe di input calcolata in base all'algoritmo Levenshtein edit distance. Il valore 0 indica che le stringhe sono equivalenti senza alcuna modifica. L'algoritmo calcola il numero di modifiche necessarie per trasformare la prima stringa nella seconda. Le stringhe sono sensibili alle maiuscole e alle minuscole. Una modifica è un cambiamento come l'aggiunta, la cancellazione, il cambio di caso o la sostituzione di un singolo carattere.

Ad esempio:
  • le_dst('sow','show') restituisce il valore 1 (l'aggiunta del carattere h).
  • le_dst('hello','Hollow') restituisce un valore di 3 (la sostituzione di e con o, la capitalizzazione di H e l'aggiunta di w).
Per ignorare le differenze di maiuscole e minuscole, utilizzare le funzioni 'upper o 'lower per cambiare il maiuscolo delle stringhe prima del confronto. Ad esempio:
  • select le_dst('Smith','SMYTH') restituisce un valore di 4 (tre cambi di lettere maiuscole e la sostituzione delle lettere da i a Y).
  • select le_dst(upper('Smith'),'SMYTH') restituisce un valore di 1 (la sostituzione della lettera da I a Y).

Distanza di modifica di Damerau-Levenshtein

Sintassi SQL:
dle_dst (<str_expr_1>, <str_expr_2>)
Il valore restituito indica la differenza tra le due stringhe in ingresso, calcolata secondo l'algoritmo della distanza di modifica di Damerau-Levenshtein. Simile all'algoritmo di Levenshtein:
  • Una modifica è un cambiamento come l'aggiunta, la cancellazione, il cambio di caso o la sostituzione di un singolo carattere.
  • Il valore di ritorno è un numero interoint4) che indica il numero di modifiche necessarie per trasformare la prima stringa nella seconda stringa.
  • Il valore 0 indica che le stringhe sono equivalenti senza alcuna modifica.
  • I confronti tra le stringhe sono sensibili alle maiuscole e alle minuscole.
Tuttavia, nell'algoritmo di Damerau-Levenshtein, la trasposizione di caratteri vicini conta come una singola modifica, non come due modifiche. Ad esempio:
  • le_dst('two','tow') restituisce un valore di 2 (cambiando la w in una o e la o in una w).
  • dle_dst('two','tow') restituisce il valore 1 (trasposizione di w e o).