访问 SQL 查询:WHERE AND LIKE 语句中的 * 通配符有问题

Posted

技术标签:

【中文标题】访问 SQL 查询:WHERE AND LIKE 语句中的 * 通配符有问题【英文标题】:Access SQL Query: trouble with * wildcard in WHERE AND LIKE statement 【发布时间】:2018-01-26 19:37:11 【问题描述】:

我要执行的查询:

SELECT *
FROM qryReportView
WHERE ((ID = 719) 
    AND (Name Like "*x"));

但是,当我运行此查询时,我没有返回任何记录。每个标准都独立运作:

SELECT *
FROM qryReportView
WHERE ID = 719;

SELECT *
FROM qryReportView
WHERE Name Like "*x";

两个查询都按预期返回记录,但是当我将它们组合起来时出现问题。我知道至少有一条记录同时满足这两个条件。

注意:当我用明确的名称替换 * 通配符时,我会返回正确的记录。这对我来说不是一个可行的解决方案,因为我的查询需要选择以“x”结尾并带有许多可能前缀的记录。

非常感谢您的帮助。

【问题讨论】:

出了什么问题? 单独运行每个查询时,每个结果会得到什么结果?我只问这个是因为我想看看你的 ID 为 719 的行是否有一个以 x 结尾的名称;我怀疑它没有。由于您使用的是“AND”,因此查询与两个条件都不匹配,因此查询不会返回任何内容。我相信您想在这种情况下使用 OR... 您的查询似乎没有问题。确保 ID = 719 的记录确实具有以“x”结尾的“名称”列值。 【参考方案1】:

您的问题是逻辑运算符问题。

当您向 RDBMs 询问 samich 和可乐时,如果它有 samich 但没有可乐,您将一无所获。这就是这里发生的事情,你需要一个'or'

SELECT *
FROM qryReportView
WHERE (ID = 719
       OR 
       Name Like '*x');

【讨论】:

以上是关于访问 SQL 查询:WHERE AND LIKE 语句中的 * 通配符有问题的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server参数化查询之where in和like实现详解

Sql Server参数化查询之where in和like实现详解

转载Sql Server参数化查询之where in和like实现详解

sql select where like 变量模糊查询

带有 NOT LIKE IN WHERE CLAUSE 的 Sql 查询

MYSQL如何进行sql like (sql查询结果)的查询