Получить последнюю часть значения, возвращаемого функцией split_part () - PullRequest
1 голос
/ 07 февраля 2020

У меня есть строка file_path, разделенная косой чертой. Я хочу разделить их на основе косой черты и вернуть имя файла.

INPUT

//a/b/c/xyz.png

OUTPUT

xyz.png

ТЕКУЩЕЕ РЕШЕНИЕ

SELECT REVERSE(SPLIT_PART(REVERSE('//a/b/c/xyz.py'), '/', 1)) as "file_name";

Есть ли более эффективный способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

regexp_match() более кратко:

select (regexp_match('//a/b/c/xyz.py', '[^/]+$'))[1]
0 голосов
/ 07 февраля 2020

Я бы просто использовал regexp_replace(), чтобы удалить все до последней записи sh (включено):

select regexp_replace('//a/b/c/xyz.png', '.*/', '')

Демонстрация на DB Fiddle :

| regexp_replace |
| :------------- |
| xyz.png        |

Вы также можете использовать substring(), который может быть или не быть более эффективным:

substring('//a/b/c/xyz.png' from '[^/]*$')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...