[英]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.