Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WHERE子句中的SQLite if语句_Sqlite_Case_Where Clause - Fatal编程技术网

WHERE子句中的SQLite if语句

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不为空

我知道我可以在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.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)
...