使用LIKE语句sql选择CASE

VT5*_*555 0 sql ms-access

我想使用SQL来查询我的访问(2010)数据库中的一些数据.

我想做的是将所有IBS人员拉出来.(这我知道怎么做).然后使用SQL创建一个变量,如果存在"?IBS"(未诊断),则存储0;如果在此变量中存储(诊断为IBS),则存储1.此信息存储在名为"AdditionalHealthProblems"的文本变量中.

我正在尝试使用带有Like的SELECT CASE语句,但似乎无法让它工作.

SELECT AdditionalHealthProblems, 'Diagnosed' = 
       CASE 
           WHEN AdditionalHealthProblems LIKE '*?IBS*' THEN '0'
           ELSE '1'
       END
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like '*IBS*'));
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我'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'));
Run Code Online (Sandbox Code Playgroud)

但它还没有工作......

错误消息提供语法错误并突出显示WHEN

- - - - - - - -回答 - - - - - - - - - - - - -

将选择案例切换到Switch()函数,它工作正常!

这是最终的代码:

SELECT tblFollowUpQs.AdditionalHealthProblems, Switch( tblFollowUpQs.AdditionalHealthProblems LIKE '*[?]*', 1, tblFollowUpQs.AdditionalHealthProblems NOT LIKE '*[?]*', 0)
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like '*IBS*'));
Run Code Online (Sandbox Code Playgroud)

jpw*_*jpw 5

Microsoft Access不支持该CASE...WHEN语句.请改用IIF语句:

IIF(表达式,值如果为true,则值为false)

参考

SELECT tblFollowUpQs.AdditionalHealthProblems, 
IIf(tblFollowUpQs.AdditionalHealthProblems Like "IBS",1,0) AS [Diagnosed] 
FROM tblFollowUpQs
WHERE (((tblFollowUpQs.AdditionalHealthProblems) Like "'IBS"));
Run Code Online (Sandbox Code Playgroud)

如果您需要使用通配符,可以在office.microsoft.com上阅读更多内容