SQL WHERE 子句从一个字段中搜索多个参数
SQL WHERE clause searching for multiple parameters from one field
基本上我希望 MS Access 查询输出满足以下所有三个条件的所有记录:
- Expanded_Status = "符合条件但未注册"
- 医院 =“UHN”
- 评论=“移植”或“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*");
我添加了两件事:
- 在
Comments
上调用 lower 确保你只比较小写字符串 - 如果有人在评论中有“Post Transplant”,它可能与“post transplant 不匹配“
- 比较字符串开头和结尾的通配符
*
- 这告诉 Access 我的比较字符串可以在注释中的任何位置。
基本上我希望 MS Access 查询输出满足以下所有三个条件的所有记录:
- Expanded_Status = "符合条件但未注册"
- 医院 =“UHN”
- 评论=“移植”或“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*");
我添加了两件事:
- 在
Comments
上调用 lower 确保你只比较小写字符串 - 如果有人在评论中有“Post Transplant”,它可能与“post transplant 不匹配“ - 比较字符串开头和结尾的通配符
*
- 这告诉 Access 我的比较字符串可以在注释中的任何位置。