基于嵌套 SELECT 在 SQLite LIKE 子句中使用多个搜索条件
Using multiple search criteria in SQLite LIKE clause based on a nested SELECT
我在 SQLite 的“SOURCE”table 中有一个完整路径列表,在 SPECIFICFILES table 中有一个特定文件名列表(这显然是路径的一部分)。
我想根据文件名在 SOURCE table 中查找文件。我正在尝试使用“LIKE”来匹配部分路径,但下面的搜索 returns nothing:
select * from SOURCE WHERE FullPath like (select char(39)||'%'||"SPECIFICFILES"."Filename"||'%'||char(39) FROM SPECIFICFILES);
(Char(39) 是 ASCII 格式的引号)。
此查询returns 无。这在 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;
参见demo。
我在 SQLite 的“SOURCE”table 中有一个完整路径列表,在 SPECIFICFILES table 中有一个特定文件名列表(这显然是路径的一部分)。
我想根据文件名在 SOURCE table 中查找文件。我正在尝试使用“LIKE”来匹配部分路径,但下面的搜索 returns nothing:
select * from SOURCE WHERE FullPath like (select char(39)||'%'||"SPECIFICFILES"."Filename"||'%'||char(39) FROM SPECIFICFILES);
(Char(39) 是 ASCII 格式的引号)。
此查询returns 无。这在 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;
参见demo。