13

我使用 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 语句在访问上是不同的,或者访问是否有这个功能?

PS
is_enable 是布尔值

4

5 回答 5

17

想通了:
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。

于 2013-02-09T07:06:03.553 回答
10

或者,您可以使用IIF

IIF(is_enable = 1 , 'YES', 'NO')
于 2013-02-09T06:29:57.540 回答
2

选择是查询中可用的另一个 Access(实际上是 VBA)函数,类似于 Switch,但返回答案列表的索引。例如,如果 Choice 为 2,Choose([Choice], "A","B","C") 将返回 "B"。我发现它在过去很有用。

于 2013-02-09T20:47:49.177 回答
1

This is really a display issue, and would possibly be best done somewhere other than SQL. is_enabled is clearly a Boolean/YesNo data type, so you can just format it:

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

Or

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

All work in VB.Net and return text, not boolean.

See http://msdn.microsoft.com/en-us/library/office/gg251755.aspx

于 2013-02-09T12:08:41.497 回答
0

尝试这个

yourColumnName=case when is_enable=1 then 'Yes' ELSE 'No' END
于 2013-02-09T06:35:46.193 回答