首页 > 解决方案 > 使用“LIKE”运算符的嵌套 MS Access SQL 查询

问题描述

我收到了大量文件,并且在 Excel 文件中实际上是“文档索引”。

我试图确定我们是否真的收到了索引中列出的所有文件。

我的问题是并非所有电子文件名都是正确的。

在某些情况下,电子文件名已添加描述或修订,因此无法直接查找 (JOIN),我想使用嵌套的 LIKE 语句:

问题的一个例子是我无法匹配以下对象:
tblINDEX.idxFilename    -     tblFilename.dirFilename
RR-ASF-00-0111-000075  -    RR-ASF-00-0111-000075Construction Details.pdf

以下查询 (JOIN) 仅查找直接匹配项:

SELECT tblINDEX.idxFilename, tblFilename.dirFilename
FROM tblINDEX LEFT JOIN tblFilename ON tblINDEX.idxFilename = dirFilename
WHERE tblFilename.filename Is Null Or tblFilename.filename Is Not Null;

下面的查询(LIKE)不显示空白/空值(缺少文件名)。

SELECT tblINDEX.idxFilename, tblFilename.dirFilename
FROM tblFilename, tblINDEX
WHERE tblFilename.dirFilename Like idxFilename & '*' Or tblFilename.dirFilename Is Null;

我的嵌套 'SELECT' 在嵌套的 SELECT 语句中返回语法错误。

SELECT tblINDEX.idxFilename
    ,(
        SELECT tblFilename.filename
        FROM tblFilename
        WHERE tblFilename.filename Like tblINDEX.idxFilename & '*'
        ) AS 'idxFilename_FN'    
    FROM tblINDEX
;

我知道这种嵌套查询方法适用于 T-SQL,但很难让它在 MS Access 中运行。

标签: sqlms-accessnested

解决方案


没试过,但是这个呢?

SELECT tblINDEX.idxFilename, tblFilename.dirFilename
FROM tblINDEX LEFT JOIN tblFilename ON tblFilename.filename Like tblINDEX.idxFilename & '*'  
WHERE....

它必须在 SQL 视图中完成,并且会阻止切换回设计视图,但它应该可以工作。


推荐阅读