Database Reference
In-Depth Information
SELECT title FROM movies WHERE title ILIKE 'stardust _ %' ;
title
-------------------
Stardust Memories
Das ist in einfachen Fällen nützlich, doch LIKE ist auf simple Wildcards be-
schränkt.
Reguläre Ausdrücke
Eine wesentlich leistungsfähigere String-Matching-Syntax bieten Reguläre
Ausdrücke (Regex). Reguläre Ausdrücke erscheinen im gesamten Buch recht
oft, da viele Datenbanken sie unterstützen. Es gibt ganze Bücher, die sich nur
der Entwicklung leistungsfähiger regulärer Ausdrücke widmen - das Thema
ist bei Weitem zu kompliziert, um hier eingehender behandelt werden zu kön-
nen. Postgres ist (größtenteils) POSIX-konform.
Bei Postgres wird ein Regex-Match durch den Operator ~ eingeleitet, dem op-
tional ein ! (für nicht vorstehen) und ein * (für schreibungsunabhängig )folgen
kann. Wenn Sie also alle Filme zählen wollen, die nicht mit the beginnen, kön-
nen Sie die folgende schreibungsunabhängige Query verwenden. Die Zeichen
innerhalb des Strings sind der reguläre Ausdruck.
SELECT COUNT( * ) FROM movies WHERE title !~ * '^the. * ' ;
Sie können Strings für das Pattern Matching obiger Queries indexieren, in-
dem Sie einen text _ pattern _ ops -Operatorklassen-Index erzeugen, solange
die indexierten Werte kleingeschrieben sind.
CREATE INDEX movies _ title _ pattern ON movies (lower(title) text _ pattern _ ops);
Wir haben text _ pattern _ ops verwendet, weil der Titel vom Typ text ist. Wenn
Sie varchars, chars, oder Namen indexieren müssen, verwenden Sie die ent-
sprechenden Operatoren varchar _ pattern _ ops , bpchar _ pattern _ ops und
name _ pattern _ ops .
Levenshtein
Levenshtein ist ein Stringsvergleichsalgorithmus, der die Ähnlichkeit zwei-
er Strings vergleicht, indem er berechnet, wie viele Schritte notwendig sind,
um einen String in den anderen zu überführen. Jedes ersetzte, fehlende oder
hinzugefügte Zeichen gilt als Schritt. Die Distanz entspricht der Gesamtzahl
der Schritte. Bei PostgreSQL wird die levenshtein() -Funktion über das Zu-
Search WWH ::




Custom Search