【发布时间】:2013-02-01 22:16:39
【问题描述】:
ODBC 是否支持 MS Access 的 CASE WHEN 子句?还有其他不支持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
【问题讨论】:
-
我似乎记得您曾在 MS Access 中使用
IIF而不是CASE(这不是 ODBC 特有的,只是一般的 Access 事物)。 -
是的,但
IIF是特定于 MS Access 的。我想确定 ODBC 是否支持 MS Access 的CASE。 -
使用 ODBC 发送语句时,您必须使用目标数据库支持的 SQL。 MS Access 不支持 CASE 语句,因此与 MS Access 的 ODBC 连接也无法“支持”它们。
-
@LordPeter 我怀疑 OP 是否会得到更好的答案。 (Harriet Vane 这些天怎么样?)
-
@Remou 我的出身卑微,但他们的故事很迷人:)
标签: sql database ms-access odbc