Eine der wichtigsten Fähigkeiten von Abfragen ist, Datensätze nach beliebigen Kriterien bzw. Bedingungen zu filtern. Hier ein einfaches Beispiel:

| Feld: | txtOrt | |
| Tabelle: | tabOrte | |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | "München" | |
| oder: | ||
Die Abfrage gibt jetzt nur noch Datensätze aus, bei denen im Feld
txtOrt 'München' eingetragen ist:
SELECT txtOrt FROM tabOrte WHERE txtOrt="München";
| Abfrage1 : Auswahlabfrage |
|---|
| txtOrt |
| München |
Auch im Zusammenhang mit Kriterien ist es manchmal sinnvoll, Felder nicht anzuzeigen:
| Feld: | tabOrte.* | txtOrt |
| Tabelle: | tabOrte | tabOrte |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | "München" | |
| oder: | ||
SELECT * FROM tabOrte WHERE txtOrt="München";
| Abfrage1 : Auswahlabfrage | ||
|---|---|---|
| IDOrt | txtOrt | lngLand |
| 1 | München | 2 |
Es ist möglich, als Kriterium nicht nur einen festen Ausdruck, sondern auch Operatoren einzugeben:
| Feld: | tabOrte.* | lngLand |
| Tabelle: | tabOrte | tabOrte |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | >2 | |
| oder: | ||
So werden alle Datensätze ausgegeben, bei denen im Feld lngLand
ein Wert größer als 2 steht:
SELECT * FROM tabOrte WHERE lngLand>2;
| Abfrage1 : Auswahlabfrage | ||
|---|---|---|
| IDOrt | txtOrt | lngLand |
| 3 | Berlin | 3 |
Hier eine Auflistung von Operatoren:
| Operatoren | ||
|---|---|---|
| Operator | Beispiel | Bedeutung |
| = | =1 | gleich |
| <> | <>1 | ungleich |
| < | <1 | kleiner als |
| > | >1 | größer als |
| <= | <=1 | kleiner oder gleich |
| >= | >=1 | größer oder gleich |
| Zwischen ... und | Zwischen 1 und 3 | Zwischen zwei Werten (jeweils einschließlich) |
| Wie | Wie "X*" | entspricht einem Textmuster |
| In | In ('Müller', 'Mayer', 'Schulze') | in einer Liste enthaltene Werte |
Darüber hinaus gibt es noch den Null-Operator, mit dem man nach leeren Feldern suchen kann. Dies ist nicht zu verwechseln mit einer leeren Zeichenfolge oder dem Zahlenwert 0: In einem Zahlenfeld kann entweder den Wert 0 stehen oder, wenn es in den Feldeinstellungen erlaubt ist, gar nichts. Um nach einer 0 zu suchen, hieße das Kriterium =0, um nach einem leeren Feld zu suchen, würde es Ist Null heißen. Eine leere Zeichenfolge hingegen sucht man mit "" (ohne Leerzeichen dazwischen).
Operatoren funktionieren auch für Textfelder:
| Feld: | txtOrt | |
| Tabelle: | tabOrte | |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | >"C" | |
| oder: | ||
Nun erhält man alle Ortsnamen, die alphabetisch nach "C" kommen:
SELECT txtOrt FROM tabOrte WHERE txtOrt>"C";
| Abfrage1 : Auswahlabfrage |
|---|
| txtOrt |
| München |
| Stuttgart |
Für Textfelder gibt es zusätzlich noch den Wie−Operator. Mit ihm können Platzhalterzeichen verwendet werden, um alle Elemente zu finden, die einem Muster entsprechen:
| Feld: | tabOrte.* | txtOrt |
| Tabelle: | tabOrte | tabOrte |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | Wie "B*" | |
| oder: | ||
Die Abfrage gibt jetzt alle Datensätze aus, bei denen der Ortsname mit 'B' beginnt:
SELECT * FROM tabOrte WHERE txtOrt Like "B*";
| Abfrage1 : Auswahlabfrage | ||
|---|---|---|
| IDOrt | txtOrt | lngLand |
| 2 | Bamberg | 2 |
| 5 | Bayreuth | 2 |
| 3 | Berlin | 3 |
Folgende Platzhalterzeichen sind möglich:
| Platzhalterzeichen | |||
|---|---|---|---|
| Symbol | Beispiel | Ergebnis | Verwendung |
| * | Wie "*er" | findet Maier, Müller, Junker | Entspricht einer beliebigen Anzahl Zeichen |
| ? | Wie "Ma?er" | findet Maier, Majer und Mayer | Entspricht einem beliebigen einzelnen Zeichen |
| # | Wie "1#3" | findet 103, 113, 123 | Entspricht einer beliebigen einzelnen Ziffer im Text |
| [ ] | Wie "Ma[iy]er" | findet Maier und Mayer, aber nicht Majer | Entspricht einem einzelnen Zeichen innerhalb der eckigen Klammern |
| ! | Wie "Ma[!iy]er" | findet Majer, aber nicht Maier oder Mayer | Entspricht einem einzelnen, beliebigen, nicht aufgelisteten Zeichen |
| - | Wie "b[a-c]d" | findet bad, bbd und bcd | Entspricht einem einzelnen, beliebigen Zeichen innerhalb des angegebenen Bereichs |
Der oben aufgefürte in-Operator ist eine Besonderheit: Man könnte mit In ('Müller', 'Mayer', 'Schulze') nach Datensätzen suchen, die in einer Liste enthalten sind. So etwas ist normalerweise mit 'oder' sinnvoller (Siehe mehrere Kriterien). Spannend wird es erst im Zusammenhang mit Unterabfragen: In der folgenden Abfrage steckt im In-Operator selbst wieder SQL-Code. Sie gibt alle Orte aus, die in einem Bundesland liegen, in denen es auch einen Ort namens 'Neustadt' gibt - ohne, dass man wissen muss, in welchen Bundesländern ein solcher Ort existiert.
| Feld: | txtOrt | lngLand |
| Tabelle: | tabOrte | tabOrte |
| Sortierung: | ||
| Anzeigen: | ![]() |
![]() |
| Kriterien: | In (SELECT lngLand FROM tabOrte WHERE txtOrt = "Neustadt") | |
| oder: | ||
Übrigens können Unterabfragen auch in der Zeile 'Feld' stehen: Um einen Feldnamen überhaupt erst per Abfrage zu ermitteln. Unterabfragen sind also recht mächtig - führen allerdings für dieses Tutorial erst einmal zu weit...