我想使用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)
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上阅读更多内容
| 归档时间: |
|
| 查看次数: |
2614 次 |
| 最近记录: |