我想使用SQL来查询我访问(2010)数据库中的一些数据。使用LIKE语句的SELECT CASE sql
我想要做的是将所有IBS患者全部拔出。 (这我知道该怎么做)。 然后使用SQL创建一个变量,该变量在存在“?IBS”(未诊断)时存储0,如果在此变量中存储了“IBS”(存储为“IBS”),则存储1。 该信息存储在名为“AdditionalHealthProblems”的文本变量中。
我正在尝试使用SELECT CASE语句,但似乎无法使其工作。
SELECT AdditionalHealthProblems, 'Diagnosed' =
CASE
WHEN AdditionalHealthProblems LIKE '*?IBS*' THEN '0'
ELSE '1'
END
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like '*IBS*'));
但这不起作用。我通过一个错误消息让在“'Diagnosed' = CASE WHEN AdditionalHealthProblems LIKE '*?IBS*' THEN '0' ELSE '1'END"
语句错误。
有人能告诉我什么是错的? 或者,如果有更好的方法来获取这些信息?
谢谢!
-----------------编辑--------------------
改为
SELECT tblFollowUpQs.AdditionalHealthProblems, CASE
WHEN tblFollowUpQs.AdditionalHealthProblems LIKE 'IBS' THEN '0' END As Diagnosed
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like 'IBS'));
但它仍然没有工作...
错误信息给一个语法错误和亮点WHEN
---------------答案------ --------------------
将选择案例切换到Switch()函数,它工作!
下面是最终代码:
SELECT tblFollowUpQs.AdditionalHealthProblems, Switch(tblFollowUpQs.AdditionalHealthProblems LIKE '*[?]*', 1, tblFollowUpQs.AdditionalHealthProblems NOT LIKE '*[?]*', 0)
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like '*IBS*'));
它的这种说法 – VT555 2014-09-04 18:40:37
检查中丢失的运算符错误信息这一个: http://stackoverflow.com/questions/7687717/sql-2005-can-i-use -key-case-in-a-case-statement- 仅供参考:通配符是'%'字符。 – newBee 2014-09-04 18:41:36
就像'%IBS%'或'%IBS_'一样不使用*或*?替代或“正则表达式” – 2014-09-04 18:42:45