Access 2010中正确的CASE SELECT语句是什么?

时间:2013-02-09 06:28:55

标签: sql vb.net ms-access case

我使用vb.net和Access 2010作为数据库(.accdb)

这适用于MySQL:

SELECT user_id, username, first_name, middle_name, last_name,
CASE is_enable WHEN 1 THEN 'Yes' ELSE 'No' END 
FROM tbl_user_accounts ORDER BY user_id

但是当向Access传递相同的查询时,我收到以下错误:

Unrecognized keyword WHEN.

所以我假设CASE语句在访问方面有所不同,或者访问是否具有该功能?

P.S。
is_enable是boolean

5 个答案:

答案 0 :(得分:16)

想出来:
Access 2010没有CASE功能,我们改用SWITCH。

SELECT user_id, username, first_name, middle_name, last_name, SWITCH(is_enable=True,'Yes',is_enable=False,'No') FROM tbl_user_accounts ORDER BY user_id

感谢chuff和JW。

答案 1 :(得分:10)

或者,you can use IIF

IIF(is_enable = 1 , 'YES', 'NO')

答案 2 :(得分:2)

选择是查询中可用的另一个Access(真正的VBA)功能,类似于Switch但返回索引列表的索引。例如,如果选择为2,则选择([选择],“A”,“B”,“C”)将返回“B”。我发现它在过去很有用。

答案 3 :(得分:1)

这实际上是一个显示问题,可能最好在除SQL以外的地方完成。 is_enabled显然是布尔/ YesNo数据类型,因此您只需格式化它:

 SELECT Format(AYesNo,'Yes/No') As ATextYN FROM table1

或者

 Format(AYesNo,'True/False')
 Format(AYesNo,'On/Off')

所有工作都在VB.Net中并返回文本,而不是布尔值。

请参阅http://msdn.microsoft.com/en-us/library/office/gg251755.aspx

答案 4 :(得分:0)

试试这个

yourColumnName=case when is_enable=1 then 'Yes' ELSE 'No' END