Aar*_*ron 13 sql database ms-access odbc
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
Yaw*_*war 28
由于您使用Access来撰写查询,因此您必须坚持使用Access的SQL版本.
要在几个不同的返回值之间进行选择,请使用switch()函数.所以要翻译和扩展你的例子:
select switch(
age > 40, 4,
age > 25, 3,
age > 20, 2,
age > 10, 1,
true, 0
) from demo
Run Code Online (Sandbox Code Playgroud)
"真实"案例是默认案例.如果您没有它并且没有其他情况匹配,则该函数将返回null.
该办公室网站对本文档,但他们的榜样语法是VBA和它也是错误的.我已经给了他们这方面的反馈,但是按照上面的例子你应该没问题.
小智 13
您可以使用IIF
下一个示例中的语句:
SELECT
IIF(test_expression, value_if_true, value_if_false) AS FIELD_NAME
FROM
TABLE_NAME
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
101353 次 |
最近记录: |