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

时间:2018-01-26 19:37:11

标签: sql ms-access

我想执行的查询:

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

然而,当我运行此查询时,我没有返回任何记录。每个标准都有自己的作用:

SELECT *
FROM qryReportView
WHERE ID = 719;

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

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

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

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题是合乎逻辑的运营商问题。

当你向一个RDBMs询问一个samich和一个可乐时,如果它有一个samich而不是一个可乐,你什么也得不到。这就是这里发生的事情,你需要一个'or'

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