/ / SQLite if v klauzule WHERE - sqlite, case, where-clause

Príkaz SQLite if v klauzule WHERE - sqlite, case, where-clause

Viem, že môžem použiť príkaz CASE v dotaze SQLite, ale neviem, ako ho postaviť v klauzule WHERE.

Vlastne to mám v dlhej klauzule WHERE (toto je len tá časť, na ktorú sa vzťahuje otázka):

AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))

V skutočnosti to chcem len takto:

AND (%d >= (wines.year + wines.maturity))

=> ak je wine.apogee NULL

alebo tiež:

AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))

=> ak wines.apogee NIE JE NULL

Ako v tomto prípade použiť príkaz CASE na otestovanie, či wines.apogee NIE JE NULL a v tomto prípade pridajte druhú časť žiadosti?

Vďaka !

odpovede:

4 pre odpoveď č. 1

CASE dokáže vypočítať akúkoľvek hodnotu, dokonca aj booleovskú hodnotu vrátenú porovnaním. V SQLite, 1 je rovnaká ako "pravda":

...
AND %d >= (wines.year + wines.maturity)
AND CASE WHEN wines.apogee IS NOT NULL
THEN %d < (wines.year + wines.apogee)
ELSE 1
END
...

To isté sa dá urobiť s ifnull ():

...
AND %d >= (wines.year + wines.maturity)
AND ifnull(%d < (wines.year + wines.apogee), 1)
...