Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Suchbedingung

Suchbedingungen dienen dazu, die Menge der Sätze einzuschränken, die von einer Tabellenoperation oder SQL-Anweisung einer Routine betroffen sind. Es werden nur die Sätze berücksichtigt, die die angegebene Suchbedingung erfüllen. Sie können Suchbedingungen angeben beim Löschen (DELETE), Einfügen/Ändern (MERGE), Ändern (UPDATE) und Auswählen von Sätzen (SELECT), beim Verbinden von Tabellen (Join-Ausdruck) und in einem bedingten Ausdruck (CASE-Ausdruck). In Tabellen- und Spaltenbedingungen können Sie Suchbedingungen angeben, um Integritätsbedingungen zu formulieren. Auch bei AAnweisungen in Routinen treten Suchbedingungen auf.

Sie formulieren die Suchbedingung in einer WHERE-, HAVING-, ON-, CHECK- oder WHEN-Klausel oder einer Kontrollanweisung einer Routine, die in folgenden Anweisungen und Ausdrücken bzw. Abfrage-Ausdrücken vorkommen können:

  • WHERE-Klausel

    • DELETE-Anweisung

    • SELECT-Anweisung

    • SELECT-Ausdruck bei CREATE VIEW, DECLARE, INSERT

    • UPDATE-Anweisung

  • HAVING-Klausel

    • SELECT-Anweisung

    • SELECT-Ausdruck bei CREATE VIEW, DECLARE, INSERT

  • ON-Klausel

    • MERGE-Anweisung

    • Join-Ausdruck

  • CHECK-Bedingung in der CREATE TABLE- oder ALTER TABLE-Anweisung

  • WHEN-Klausel in einem CASE-Ausdruck mit Suchbedingung

  • IF-, CASE-, REPEAT- oder WHILE-Anweisung in einer Routine

Eine Suchbedingung besteht aus Prädikaten und eventuell logischen Operatoren. Die Prädikate sind die Operanden der logischen Operatoren.

Zur Auswertung der Suchbedingung werden die Operatoren auf die Ergebnisse der Operanden angewendet. Das Ergebnis ist einer der Wahrheitswerte wahr, falsch oder unbestimmt.

Die Reihenfolge der Auswertung der Operanden ist nicht festgelegt. In bestimmten Fällen wird ein Operand nicht berechnet, wenn er für die Berechnung des Gesamtergebnisses nicht benötigt wird.


suchbedingung ::= {

praedikat |

suchbedingung { AND | OR } suchbedingung  |  

NOT suchbedingung   |

( suchbedingung )

}



praedikat

Prädikat.


AND

Logisches UND.

Ergebnis für Op1 AND Op2


Op1 wahr

Op1 falsch

Op1 unbestimmt

Op2 wahr

wahr

falsch

unbestimmt

Op2 falsch

falsch

falsch

falsch

Op2 unbestimmt

unbestimmt

falsch

unbestimmt

Tabelle 20: logischer Operator AND


OR

Logisches ODER.

Ergebnis für Op1 OR Op2


Op1 wahr

Op1 falsch

Op1 unbestimmt

Op2 wahr

wahr

wahr

wahr

Op2 falsch

wahr

falsch

unbestimmt

Op2 unbestimmt

wahr

unbestimmt

unbestimmt

Tabelle 21: logischer Operator OR


NOT

Negation.

Ergebnis


NOT Op

Op wahr

falsch

Op falsch

wahr

Op unbestimmt

unbestimmt

Tabelle 22: logischer Operator NOT

Prioritäten

  • Klammerausdrücke haben die höchste Priorität.

  • NOT hat Vorrang vor AND und OR.

  • AND hat Vorrang vor OR.

  • Operatoren gleicher Priorität werden von links nach rechts angewendet.


Beispiele


Aus den Tabellen AUFTRAG und KUNDE alle Aufträge mit zugehöriger Firma heraussuchen, die nach dem angegebenen Datum gestellt wurden.

SELECT a.anr, k.firma, a.atext, a.adatum 
   FROM auftrag a, kunde k
   WHERE a.adatum > DATE '<date>' AND a.knr = k.knr
   anr  firma            atext                    adatum
   250  Pudelshop Anke   Serienbrief-Einweisung   <date>
   251  Pudelshop Anke   Kunden-Verwaltung        <date>
   300  Login GmbH       Netzwerk-Test/Vergleich  <date>
   305  Pudelshop Anke   Mitarbeiterschulung      <date>


Aus der Tabelle ARTIKEL alle Artikel löschen, deren Preis kleiner als 500.00 ist und deren Artikelbezeichnung aus dem Buchstaben H und einer beliebigen Zeichenfolge besteht.

DELETE FROM artikel WHERE preis < 500.00 AND artbez LIKE 'H%'


Aus der Tabelle LEISTUNG alle Aufträge heraussuchen, die im angegebenen Zeitraum durchgeführt wurden oder bei denen keine Schulungen durchgeführt bzw. kein Schulungsmaterial und kein Handbuch erstellt wurde.

SELECT lnr, ldatum, ltext FROM leistung
   WHERE ldatum BETWEEN DATE '2013-04-01' AND DATE '2013-04-30>'
   OR ltext NOT IN('Schulung','Schulungsmaterial','Handbuch')
   lnr     anr    ldatum       ltext
    1      200    2013-04-19   Schulungsmaterial
    2      200    2013-04-22   Schulung
    3      200    2013-04-23   Schulung
    4      211    2013-01-20   Systemanalyse
    5      211    2013-01-28   Datenbankentwurf
    6      211    2013-02-15   Kopien/Folien
   10      250    2013-02-21   Reisekosten