ale*_*our 2 sqlite case where-clause
我知道我可以在SQLite查询中使用CASE语句,但是我不知道如何在WHERE子句中构建它。
实际上,我在很长的WHERE子句中有此内容(这只是问题所关注的部分):
AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))
Run Code Online (Sandbox Code Playgroud)
实际上我只想要:
AND (%d >= (wines.year + wines.maturity))
Run Code Online (Sandbox Code Playgroud)
=>如果wines.apogee为NULL
或者:
AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))
Run Code Online (Sandbox Code Playgroud)
=>如果wines.apogee不为空
在这种情况下,如何使用CASE语句测试wines.apogee是否为NULL并在这种情况下添加请求的第二部分?
谢谢 !
CASE可以计算任何值,甚至可以是比较返回的布尔值。在SQLite中,1与“ true”相同:
...
AND %d >= (wines.year + wines.maturity)
AND CASE WHEN wines.apogee IS NOT NULL
THEN %d < (wines.year + wines.apogee)
ELSE 1
END
...
Run Code Online (Sandbox Code Playgroud)
使用ifnull()函数可以完成相同的操作:
...
AND %d >= (wines.year + wines.maturity)
AND ifnull(%d < (wines.year + wines.apogee), 1)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2253 次 |
| 最近记录: |