我使用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
答案 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)
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