WHERE子句中的SQLite if语句
我知道我可以在SQLite查询中使用CASE语句,但我不知道如何在WHERE子句中构建它 事实上,我在一个很长的WHERE子句中有这个问题(这只是问题所涉及的部分): =>如果wines.apogee为空 或者:WHERE子句中的SQLite if语句,sqlite,case,where-clause,Sqlite,Case,Where Clause,我知道我可以在SQLite查询中使用CASE语句,但我不知道如何在WHERE子句中构建它 事实上,我在一个很长的WHERE子句中有这个问题(这只是问题所涉及的部分): =>如果wines.apogee为空 或者: AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee)) 和(%d>=(wines.year+wines.maturity))和(%d如果wines.apogee不为空
AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))
和(%d>=(wines.year+wines.maturity))和(%d<(wines.year+wines.apogee))
=>如果wines.apogee不为空
在本例中,如何使用CASE语句测试wines.apogee是否为NULL,并在本例中添加请求的第二部分
谢谢 CASE可以计算任何值,甚至是通过比较返回的布尔值。 在SQLite中,
1
与“true”相同:
。。。
和%d>=(葡萄酒.年份+葡萄酒.成熟度)
当wines.apogee不为空时
然后%d<(wines.year+wines.apogee)
其他1
结束
...
也可以通过以下方式完成:
。。。
和%d>=(葡萄酒.年份+葡萄酒.成熟度)
和ifnull(%d<(wines.year+wines.apogee),1)
...
Hm,你不能写。。。在SQLite中((wines.apogee为NULL)或(%d
?是的,我可以编写,但这并不能解决我的问题。下面的CL溶液有效。
AND (%d >= (wines.year + wines.maturity))
AND (%d >= (wines.year + wines.maturity)) AND (%d < (wines.year + wines.apogee))
...
AND %d >= (wines.year + wines.maturity)
AND CASE WHEN wines.apogee IS NOT NULL
THEN %d < (wines.year + wines.apogee)
ELSE 1
END
...
...
AND %d >= (wines.year + wines.maturity)
AND ifnull(%d < (wines.year + wines.apogee), 1)
...