我有一个包含URL的主表:
CREATE TABLE IF NOT EXISTS MasterTable (url, masterId, PRIMARY KEY(url), UNIQUE(masterId));
URL字符串看起来像这样:file:///Users/user1/Pictures/rubus_and_apple.jpeg
。
现在,我想查找url列,但只查找文件名rubus_and_apple
而不是所有url字符串。 (仅表示不带扩展名的url的最后一个部分)。
例如,我想查找关键字rubus
并获取网址:file:///Users/user1/Pictures/rubus_and_apple.jpeg
。
我需要查询如下:
SELECT masterId
FROM MasterTable
WHERE <url last component w/o extension> LIKE '%/rubus%';
我该怎么办?
答案 0 :(得分:0)
您可以使用LIKE
:
SELECT masterId
FROM MasterTable
WHERE url LIKE '%/rubus.%';
请注意,此表达式不可SARG,因此将不使用索引。
编辑:
WITH MasterTable(MasterId, url) AS(
VALUES(1, 'file:///Users/user1/Pictures/rubus_and_apple.jpeg')
)
SELECT *
FROM MasterTable
WHERE REPLACE(url,RTRIM(url,REPLACE(url,'/','')),'') LIKE '%' || 'rubus' || '%';
-- part of string after last /