Die IBM® Netezza SQL-Sprache unterstützt zwei Funktionen für Suche nach grob übereinstimmenden Zeichenfolgen: Levenshtein-Editierdistanz und Damerau-Levenshtein-Editierdistanz.
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(<Zeichenfolgeausdruck1>, <Zeichenfolgeausdruck2>)
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('sau','stau') gibt den Wert 1 zurück (das Hinzufügen des Zeichens t).
- le_dst('ballen','Balkens') gibt den Wert 3 zurück
(die Ersetzung von l durch k, die Großschreibung von B und das Hinzufügen von s).
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('Schmitt','SCHMIDT') gibt den Wert / zurück (sechs Großbuchstabenänderungen und die Ersetzung des Buchstabens t durch D).
- select le_dst(upper('Schmitt'),'SCHMIDT') gibt den Wert 1 zurück (die Ersetzung des Buchstabens t durch D).
Damerau-Levenshtein-Editierdistanz
SQL-Syntax:
dle_dst(<Zeichenfolgeausdruck1>, <Zeichenfolgeausdruck2>)
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('genua','genau') gibt den Wert 2 zurück (Änderung von u in a und von a in u).
- dle_dst('genua','genau') gibt den Wert 1 zurück (Transponieren von u und a).