Kriterien

Ausdrücke

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

Operatoren

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

Der Wie-Operator

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 In-Operator

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...