sql其中闭包具有修改的列值

时间:2018-12-02 15:11:02

标签: sqlite

我有一个包含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%';

我该怎么办?

1 个答案:

答案 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 /

db<>fiddle demo