602SQL-Úplná dokumentace Index  

Podmínka (SQL)

podmínka ::= booleovský_faktor { OR booleovský_faktor }…
booleovský_faktor ::= booleovský_term { AND booleovský_term }…
booleovský_term ::= [ NOT ] predikát
predikát ::= výraz relační_operátor výraz    
    | predikát_IS 
    | zobecněné_porovnání    
    | predikát_BETWEEN    
    | predikát_IN
    | predikát_EXISTS
    | predikát_UNIQUE
    | predikát_LIKE 
    | predikát_IS_NULL
    | predikát Fulltext
    | privil_predikáty
    | ( podmínka )
relační_operátor ::= > | < | <= | >= | = | <>
predikát_IS ::= výraz IS [NOT] { TRUE | FALSE | UNKNOWN }

Popis:

Podmínkou rozumíme takový obecný výraz, který nabývá hodnot TRUE, FALSE nebo UNKNOWN.

Podmínka se používá při vyhodnocování podmíněného výrazu CASE, klauzule WHERE a klauzule HAVING specifikace dotazu, klauzule CHECK v integritním omezení nebo specifikace JOINu, v příkazech UPDATE a DELETE, v definici triggeru nebo při vyhodnocení řídicích příkazů IF, CASE, WHILE a REPEAT.

Priorita operátorů v podmínkách je následující:

  1. *,/,DIV a MOD pro násobení, dělení, celočíselné dělení a zbytek po dělení;
  2. unární - , binární + a - pro sčítání a odečítání;
  3. relační operátory <,>,=,>=,<=,<>,.=,.=.,~ a predikáty (BETWEEN, LIKE apod.);
  4. negace NOT;
  5. spojka AND;
  6. spojka OR.

Podmínka může nabývat tří hodnot: TRUE, FALSE nebo UNKNOWN. Hodnota UNKNOWN je ekvivalentní hodnotě NULL.

Operátor OR provádí disjunkci pravdivostních hodnot. Jeho výsledek je TRUE, pokud alespoň jeden operand má hodnotu TRUE, výsledek je FALSE, pokud oba operandy jsou FALSE, jinak je výsledek UNKNOWN.

Operátor AND provádí konjunkci pravdivostních hodnot. Jeho výsledek je TRUE, pokud oba operandy mají hodnotu TRUE, výsledek je FALSE, pokud alespoň jeden operand je FALSE, jinak je výsledek UNKNOWN.

Operátor NOT provádí negaci pravdivostních hodnot, negace TRUE je FALSE, negace FALSE je TRUE, negace UNKNOWN je UNKNOWN.

Tabulka pravdivostních hodnot v tříhodnotové logice:

 a  b  a AND b  a OR b  NOT a
TRUETRUETRUETRUEFALSE
TRUEFALSEFALSETRUEFALSE
TRUEUNKNOWNUNKNOWNTRUEFALSE
FALSETRUEFALSETRUETRUE
FALSEFALSEFALSEFALSETRUE
FALSEUNKNOWNFALSEUNKNOWNTRUE
UNKNOWNTRUEUNKNOWNTRUEUNKNOWN
UNKNOWNFALSEFALSEUNKNOWNUNKNOWN
UNKNOWNUNKNOWNUNKNOWNUNKNOWNUNKNOWN

Porovnání hodnot dvou výrazů pomocí relačních operátorů předpokládá, že oba výrazy jsou číselného typu, typu znakový řetězec, typu binární řetězec nebo typu DATE, TIME nebo TIMESTAMP.

Predikát IS předpokládá, že v něm obsažený výraz je booleovského typu, a porovnává jej s booleovskou konstantou.

... WHERE zaplaceno IS NOT TRUE
vybere záznamy, které mají ve sloupci zaplaceno hodnotu FALSE nebo NULL.

Popis dalších typů predikátů je na následujících stránkách:

Odchylky od Intermediate level směrem k Full level nebo k SQL 3

Odchylky od Intermediate level směrem k Entry level

Rozšíření jazyka SQL proti normě

Seznam subsekcí: