[英]Using multiple search criteria in SQLite LIKE clause based on a nested SELECT
我在 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;
见演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.