ODBC是否支持
CASE WHEN
MS Access的条款? 还有其他不支持
CASE WHEN
的数据库
条款? 我在使用ODBC连接到MS Access时尝试了以下查询,但出现异常。
SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '(CASE WHEN (AGE > 10) THEN 1 ELSE 0 END)'
我试图找到一种通用的方法,该方法适用于大多数数据库,以便在与ODBC连接时使用比较表达式生成(计算)新的"布尔列".实际上,MS Access支持SELECT子句中的比较,但是对于某些其他数据库,则需要CASE子句.对于MS Access,SQL可以是
SELECT AGE > 10 FROM demo
但在其他情况下则必须是
SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo
- 2021-1-111 #
- 2021-1-112 #
由于使用Access编写查询,因此必须坚持使用Access的SQL版本。
要在几个不同的返回值之间进行选择,请使用switch()函数.因此,请稍微翻译一下您的示例:
select switch( age > 40, 4, age > 25, 3, age > 20, 2, age > 10, 1, true, 0 ) from demo
" true"情况是默认情况.如果您没有它,并且其他所有情况都不匹配,则该函数将返回null。
Office网站上有有关此文档的文档,但是其示例语法为VBA,这也是错误的.我已经向他们提供了反馈,但是您可以按照上面的示例进行操作。
- 2021-1-113 #
我必须使用多个IIF语句在ACCESS SQL中创建类似的结果.
IIf([refi type] Like "FHA ST*","F",IIf([refi type]="VA IRRL","V"))
所有剩余的将保持为空。
相关问题
- sql:如何删除MySQL表中的重复项sqlmysqldatabase2021-01-11 03:23
- sql:每次连接derby数据库时是否需要创建表?sqldatabaseeclipsederby2021-01-10 13:27
- mysql:MATCH AGAINST还是LIKE哪个SQL查询更好?sqlmysqldatabasesearch2021-01-09 07:53
- .net:MS Access(MDB)并发netdatabasemsaccessconcurrencymsjetace2021-01-09 00:22
- database:自引用表上的SQL递归查询(Oracle)sqldatabaseoracleplsqlhierarchicaldata2021-01-08 21:27
您可以使用
IIF
如下例所示: