SQL WHERE 子句从一个字段中搜索多个参数

SQL WHERE clause searching for multiple parameters from one field

基本上我希望 MS Access 查询输出满足以下所有三个条件的所有记录:

  1. Expanded_Status = "符合条件但未注册"
  2. 医院 =“UHN”
  3. 评论=“移植”或“tx”或“post-移植”

评论字段有 3 个不同版本的单词“transplant”,因此有些字段可能有“tx”而不是“transplant”,有些记录可能有“post-transplant”而不是“transplant” .

由于某种原因,下面的查询正在输出不符合所有三个条件的记录。

请帮我修改查询,这样我就可以只找到满足所有三个条件的记录

SELECT [First Name], [Last Name], [Subject ID], Expanded_Status, Hospital, Comments
FROM [Barriers UHN Screen - 2017 Mailing]
WHERE Expanded_Status = "Eligible but not enrolled" AND Hospital = "UHN"  AND Comments LIKE "transplant"  OR Comments OR "post transplant" OR Comments = "tx";

祖瓦, 试试这个

SELECT 
    [First Name], [Last Name], [Subject ID], Expanded_Status, Hospital, Comments
FROM 
    [Barriers UHN Screen - 2017 Mailing]
WHERE 
    Expanded_Status = "Eligible but not enrolled" AND Hospital = "UHN"  AND 
(Comments = "transplant"  OR Comments = "post transplant" OR Comments = "tx");

将 where 子句的注释部分括在方括号中,告诉访问将每个单独的评估作为 AND 子句的一部分。

基于@Harun24HR 的回答:

SELECT 
    [First Name], [Last Name], [Subject ID], Expanded_Status, Hospital, Comments
FROM 
    [Barriers UHN Screen - 2017 Mailing]
WHERE 
    Expanded_Status = "Eligible but not enrolled" AND Hospital = "UHN"  AND 
(LOWER(Comments) LIKE "*transplant*"  OR LOWER(Comments) LIKE "*post transplant*" OR LOWER(Comments) LIKE "*tx*");

我添加了两件事:

  1. Comments 上调用 lower 确保你只比较小写字符串 - 如果有人在评论中有“Post Transplant”,它可能与“post transplant 不匹配“
  2. 比较字符串开头和结尾的通配符 * - 这告诉 Access 我的比较字符串可以在注释中的任何位置。

Like Operator