где закрытие с измененным значением столбца - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть главная таблица, содержащая 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%';

Как я могу это сделать?

1 Ответ

0 голосов
/ 02 декабря 2018

Вы можете использовать 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 /

дБ <> fiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...