sqlite - 带有修改列值的 sql where 闭包
问题描述
我有一个包含 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
并获取 url: file:///Users/user1/Pictures/rubus_and_apple.jpeg
。
我需要我的查询是这样的:
SELECT masterId
FROM MasterTable
WHERE <url last component w/o extension> LIKE '%/rubus%';
我该怎么做?
解决方案
你可以使用LIKE
:
SELECT masterId
FROM MasterTable
WHERE url LIKE '%/rubus.%';
请注意,此表达式不是 SARGable,因此它不会使用索引。
编辑:
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 /
推荐阅读
- cordova - 通过 Ionic 4 上的硬件后退按钮关闭应用程序
- django - 部署在 DigitalOcean 上的 Django 应用程序的配置
- php - 使用 PayPal 结账 REST 进行捐赠是否需要服务器端验证?
- python - 我有一个简单的二叉树,我正在尝试找到树的最后一个节点
- asp.net-core - 在 asp.net core 3.1 中的 kendo ui 网格上绑定失败
- flutter - 流生成器中的快照上的数据 = null
- rbenv - Rbenv:安装 ruby 时如何有两个或多个 RUBY_CONFIGURE_OPTS?
- c# - 为什么用户控件不从视图模型绑定?
- swift - 如何在 SwiftUI 列表中显示字典数组?
- git - 如何解决 Git 报告无效的 sha1 指针 00000000000000000000000000000000000000000?