是否支持MS Access的CASE WHEN
子句?有沒有其他數據庫不支持CASE WHEN
條款?我在使用ODBC連接到MS Access時嘗試了以下查詢,但得到一個異常。如果連接ODBC,MS Access是否支持「CASE WHEN」子句?
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事物)。 – 2013-02-17 10:30:35
是的,但'IIF'是特定的MS Access。我想確保ODBC是否支持MS Access的「CASE」。 – Aaron 2013-02-17 10:34:50
使用ODBC發送語句時,必須使用目標數據庫支持的SQL。 MS Access不支持CASE語句,因此到MS Access的ODBC連接也不能「支持」它們。 – 2013-02-17 11:04:58