我想使用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