首页>Program>source

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-11
    1 #

    您可以使用 IIF 如下例所示:

    SELECT
       IIF(test_expression, value_if_true, value_if_false) AS FIELD_NAME
    FROM
       TABLE_NAME
    

  • 2021-1-11
    2 #

    由于使用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-11
    3 #

    我必须使用多个IIF语句在ACCESS SQL中创建类似的结果.

    IIf([refi type] Like "FHA ST*","F",IIf([refi type]="VA IRRL","V"))
    

    所有剩余的将保持为空。

  • css:Bootstrap 3-连续使用超过12列
  • java:如何在Hibernate的HQL中转义保留字