Funktionen für Suche nach grob übereinstimmenden Zeichenfolgen

Die SQL-Sprache des Netezza Performance Server unterstützt zwei Fuzzy-String-Suchfunktionen: Levenshtein Edit Distance und Damerau-Levenshtein Edit Distance.

Eine Suche nach grob übereinstimmenden Zeichenfolgen stellt einen näherungsweise berechneten Zeichenfolgeabgleich bereit, der auf definierten Verfahren und Algorithmen basiert. Diese Funktionen vergleichen zwei Zeichenfolgen, um zu zeigen, wie ähnlich oder unterschiedlich sie sind. Diese Funktionen unterstützen nur die VARCHAR- und CHAR-Datentypen (Latin9-Codierung).

Levenshtein-Editierdistanz

SQL-Syntax:
le_dst(<str_expr_1>, <str_expr_2>)

Der Rückgabewert ist eine Ganzzahl (int4), die angibt, wie unterschiedlich die beiden Eingabezeichenfolgen nach dem Levenshtein-Editierdistanzalgorithmus berechnet werden. Der Wert 0 gibt an, dass die Zeichenfolgen ohne Änderungen äquivalent sind. Der Algorithmus berechnet die Anzahl Änderungen, die zum Ändern der ersten Zeichenfolge in die zweite Zeichenfolge erforderlich sind. Für die Zeichenfolgen muss die Groß-/Kleinschreibung beachtet werden. Eine Änderung kann das Hinzufügen, Löschen, Ändern der Groß-/Kleinschreibung oder das Ersetzen eines einzelnen Zeichens sein.

Beispiel:
  • le_dst('sow','show') gibt den Wert 1 zurück (die Addition des Zeichens h).
  • le_dst('hello','Hollow') ergibt den Wert 3 (Ersetzung von e durch o, Großschreibung von H und Hinzufügung von w).
Sollen die Unterschiede in der Groß-/Kleinschreibung ignoriert werden, ändern Sie die Groß-/Kleinschreibung von Zeichenfolgen vor dem Vergleich mit der upper- oder lower-Funktion. Beispiel:
  • select le_dst('Smith','SMYTH') ergibt den Wert 4 (drei Großbuchstabenwechsel und die Ersetzung von i durch Y).
  • select le_dst(upper('Smith'),'SMYTH') liefert den Wert 1 (die Ersetzung von I durch Y).

Damerau-Levenshtein-Editierdistanz

SQL-Syntax:
dle_dst (<str_expr_1>, <str_expr_2>)
Der zurückgegebene Wert gibt an, wie unterschiedlich die beiden Eingabezeichenfolgen nach dem Damerau-Levenshtein-Editierdistanzalgorithmus berechnet werden. Ähnelt dem Levenshtein-Algorithmus:
  • Eine Änderung kann das Hinzufügen, Löschen, Ändern der Groß-/Kleinschreibung oder das Ersetzen eines einzelnen Zeichens sein.
  • Der Rückgabewert ist eine Ganzzahl (int4), die die Anzahl Änderungen angibt, die zum Ändern der ersten Zeichenfolge in die zweite Zeichenfolge erforderlich sind.
  • Der Wert 0 gibt an, dass die Zeichenfolgen ohne Änderungen äquivalent sind.
  • Für die Zeichenfolgevergleiche muss die Groß-/Kleinschreibung beachtet werden.
Im Damerau-Levenshtein-Algorithmus zählt die Umstellung von benachbarten Zeichen jedoch als eine einzelne Änderung, nicht zwei Änderungen. Beispiel:
  • le_dst('two','tow') ergibt den Wert 2 (wobei das w zu einem o und das o zu einem w wird).
  • dle_dst('two','tow') gibt den Wert 1 zurück (Transposition von w und o).