Подтвердить что ты не робот

Каков правильный оператор CASE SELECT в Access 2010?

Я использую 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 является логическим

4b9b3361

Ответ 1

Выяснилось:
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.

Ответ 3

Выберите другую функцию доступа (действительно VBA), доступную в запросах, аналогичную Switch, но возвращает индекс в список ответов. Например, Select ([Choice], "A", "B", "C" ) вернет "B", если "Выбор" - 2. Я нашел его полезным в прошлом.

Ответ 4

Это действительно проблема с отображением и, возможно, лучше всего сделать где-нибудь, кроме SQL. is_enabled - это, очевидно, тип данных Boolean/YesNo, поэтому вы можете просто форматировать его:

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

или

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

Все работают в VB.Net и возвращают текст, а не boolean.

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

Ответ 5

Попробуйте это

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