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ď č. 1CASE 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)
...