Textsuche
Meistens wird nur eine einfache Textsuche benötigt.
Gelegentlich werden aber Alternativen oder komplexe Suchausdrücke benötigt.
Dieses gilt insbesondere für die Suchfelder in Filtern.
Datenbank-Systeme unterstützen hierbei 2 Arten von komplexen Ausdrücken:
Reguläre Ausdrücke und
Mustervergleich.
Darüber hinaus kann man ganze Texte oder Text-Fragmente suchen.
Zusätzlich können Alternativen angegeben werden,
von denen mindestens eine bzw. alle zutreffen muss.
Such-Arten
Die jeweils ersten Zeichen legen die Such-Art fest.
Ist das allererste Zeichen ein Ausrufezeichen (
!),
dann wird die Aussage negiert,
so dass Datensätze gesucht werden, die der Bedingung nicht entsprechen.
- * oder !*
(immer oder niemals)
-
Das * ohne weiteren Text trifft immer zu.
Die Negation !* trifft entprechend niemals zu.
- @regex oder !@regex
(regulärer Ausdruck)
-
Beginnt der Suchtext mit einem Klammeraffen (@),
dann wird ein regulärer Ausdruck erwartet.
Jeder Text, der teilweise auf den regulären Ausdruck passt, wird hiermit gefunden.
Um ganze Texte zu vergleichen, kann ^ am Anfang und/oder
$ am Ende des regulärem Ausdrucks verwendet werden.
- %pattern oder !%pattern
(Mustervergleich)
-
Beginnt der Suchtext mit einem Prozent-Zeichen (%),
dann wird ein Mustervergleich durchgeführt.
Jeder Unterstrich (_) steht für exakt ein Zeichen
und jedes Prozent-Zeichen (%) steht für 0 oder mehr Zeichen
(wie ? und * bei Dateinamen).
Beide Platzhalter sind üblich für Datenbank-Abfragen mittels like.
Es wird jeweils der gesamte Text verglichen.
Sollen nur Text-Fragmente gesucht werden,
dann muss ein Prozent-Zeichen (%)
am Anfang und/oder Ende des Musters verwendet werden.
- =text oder !=text
(exakter Text oder exakte Nummer)
-
Beginnt der Suchtext mit einem Gleichheits-Zeichen (=),
dann wird der komplette Text verglichen.
Bei numerischen Datenfeldern muss der numerische Wert identisch sein.
- ^text oder !^text
(Beginn eines Texts)
-
Beginnt der Suchtext mit einem Zirkumflex (^),
dann wird der Beginn eines Textes verglichen.
- $text oder !$text
(Ende eines Texts)
-
Beginnt der Suchtext mit einem Dollar-Zeichen ($),
dann wird das Ende eines Textes verglichen.
- /fragment oder !/fragment
(Text-Fragment)
-
Beginnt der Suchtext mit einem Divisions-Zeichen (/),
dann wird nach Text-Fragmenten innerhalb der Datenfelder gesucht.
- |a|b|c
(Liste von Termen bzw. Alternativen)
-
Der Such-Text auf mehrere einzelne Terme aufgeteilt.
Als Trenner wird das Pipe-Zeichen (|) verwendet.
Ein Datensatz wird ausgewählt, wenn mindestens ein Term zutrifft.
Soll ein Pipe-Zeichen als literales Zeichen anstatt als Trenner verwendet werden,
so muss ein Backslash vorangestellt werden: \|
Die Eingabe eines Such-Textes ohne Pipe-Zeichen (wie z.B. wort)
ist ein Sonderfall dieser Regel.
In diesem Fall gibt es nur einen Text, der als Alternative ausgewertet wird.
- &a&b&c
(Term)
-
Auch Terme werden auf mehrere einzelne Elemente aufgeteilt.
Als Trenner wird das Und-Zeichen (&) verwendet.
Ein Datensatz wird ausgewählt, wenn alle Elemente eines Terms zutreffen.
Der nächste Abschnitt beschreibt,
wie jedes dieser Elemente aus Termen und Alternativen analysiert wird.
Soll ein Und-Zeichen als literales Zeichen anstatt als Trenner verwendet werden,
so muss ein Backslash vorangestellt werden: \&
Ohne eines der oben genannten speziellen Zeichen,
wird eine Oder-Suche (
|a|b|c) durchgeführt.
Terme ohne spezielles Zeichen werden werden als Fragment-Suche umgesetzt.
Damit findet der Suchtext
a alle Elemente, die ein »a« enthalten,
Suchtext
a|b alle Elemente, die ein »a« oder »b« enthalten
und Suchtext
a&b alle Elemente, die ein »a« und ein »b« enthalten.
Elemente aus Termen und Alternativen
Die einzelnen Elemente aus Termen und Alternativen werden für sich betrachtet.
Elemente ohne Zeichen werden ignoriert.
Beginnt ein Element mit
*,
!*,
@,
!@,
%,
!%,
=,
!=,
^,
!^,
$,
!$,
/ oder
!/,
dann wird es wie
oben beschrieben ausgewertet.
Darüber hinaus werden die folgenden Auswertungen durchgeführt:
- <num <=num ≤num
>num >=num ≥num
(numerische Vergleiche)
-
Diese Auswertung wird nur für numerische Datenfelder duchgeführt.
Beginnt der Suchtext mit einem Kleiner- oder Größer-Zeichen,
(< oder >), dann erfolgt ein numerischer Vergleich.
Es werden Datensätze gesucht, die der numerischen Bedingung entsprechen.
- von:bis oder !von:bis
(numerischer Bereich)
-
Diese Auswertung wird nur für numerische Datenfelder und bei korrekter Syntax duchgeführt.
Enthält der Suchtext mindestens einen Doppelpunkt (:),
sind von und bis gültige Zahlen
und gilt von<bis,
dann wird eine nummerische Suche aus einem Zahlenbereich durchgeführt.
Es werden alle Datensätze ausgewählt, die zwischen von
und bis inklusive der beiden Werte liegen.
Fehlt von (nur :bis angegeben)
dann wird ≤bis angewendet.
Fehlt bis (nur von: angegeben)
dann wird ≥von angewendet.
Fehlen beide Angaben, dann wird diese Auswertung nicht durchgeführt.
- fragment oder !fragment
(Text-Fragment)
-
Trifft keiner der obigen Fälle zu,
dann wird nach Text-Fragmenten innerhalb der Datenfelder gesucht.