sqlite - 在基于嵌套 SELECT 的 SQLite LIKE 子句中使用多个搜索条件
问题描述
我在 SQLite 的“SOURCE”表中有一个完整路径列表,在 SPECIFICFILES 表中有一个特定文件名列表(这显然是路径的一部分)。
我想根据文件名在 SOURCE 表中查找文件。我正在尝试使用“LIKE”来匹配路径的一部分,但下面的搜索没有返回任何内容:
select * from SOURCE WHERE FullPath like (select char(39)||'%'||"SPECIFICFILES"."Filename"||'%'||char(39) FROM SPECIFICFILES);
(Char(39) 是 ASCII 中的引号)。
此查询不返回任何内容。请问这在 SQLite 中是否可行,还是我需要使用 C# 依次触发每个查询?
添加一些示例数据:
Table SOURCE:
FullPath
C:\My Directory\MyFile.txt
Table SPECIFICFILES:
Filename
MyFile.txt
解决方案
您可以通过加入表格来做到这一点:
SELECT s.*, f.*
FROM SOURCE s INNER JOIN SPECIFICFILES f
ON s.FullPath LIKE '%\' || f.Filename || '%';
我不确定你为什么在你的代码中使用CHAR(39)
。
它是路径的一部分吗?
此外,如果文件名位于 末尾FullPath
,没有任何尾随\
,则无需%
在末尾连接通配符:
SELECT s.*, f.*
FROM SOURCE s INNER JOIN SPECIFICFILES f
ON s.FullPath LIKE '%\' || f.Filename;
请参阅演示。
推荐阅读
- java - 在 JavaFX 中使用 `start` 方法时不需要 main 吗?
- django - Django unhandle exceptions - 处理程序?
- gcc - 在 GNU GCC 编译器中编译后立即启动程序的命令是什么?
- android - Android Studio 没有构建现有项目
- variables - 如何查找组内的观察值是否具有某些值
- sql - 跨数据库的 SQL 条件联合
- vue.js - Vuex Axios 代币未定义
- android - Android:如何将 URL 从一个片段传递到另一个片段
- java - Java Web 注入 (Vraptor) + Websphere 8.5:WELD-001408:带有限定符 @Default 的 EntityManager 类型的依赖关系不满足
- c# - 向 MultipartFormDataContent 添加键值对