Получать все после последнего '/' - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть такой путь в моей таблице TBL_Documents:

Uploads/Documents/6093/12/695-Graco-SW_5-15-19.pdf

Мне нужно сравнить его с загружаемым файлом, который будет выглядеть следующим образом:

695-Graco-SW_5-15-19.pdf

Я хочу сравнить путь в моей таблице с именем загруженного файла.Я попытался использовать substring() в первом правом /, но я не понимаю, как на самом деле работает подстрока.Например, я пытался сделать это:

select substring(right(path,1),1,1) as path from TBL_DOCUMENT 

, но это дает мне только самый первый символ справа.Я ожидал увидеть все после последнего / символа.

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

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Я бы использовал подход, чтобы найти, сколько символов вам нужно использовать справа.Я бы сделал это, сначала перевернув строку, а затем выполнив поиск '/'.Это скажет вам, сколько символов справа это '/'.Затем я использовал бы это в функции RIGHT:

Скрипка SQL

Настройка схемы MS SQL Server 2017 :

Запрос 1 :

DECLARE @documentName varchar(100) = 'Uploads/Documents/6093/12/695-Graco-SW_5-15-19.pdf'

SELECT RIGHT(@documentName, CHARINDEX('/',REVERSE(@documentName))-1)

Результаты :

|                          |
|--------------------------|
| 695-Graco-SW_5-15-19.pdf |
0 голосов
/ 25 сентября 2019

RIGHT(path,1) означает, что вы хотите [1] символ справа от строки пути, или 'f'.Затем вы заключаете 'f' в подстроку, запрашивая символ [1], начиная с [1] -ой позиции строки.Поскольку выражение, переданное в подстроку, возвращает 'f', ваша подстрока также возвращает 'f'.

Вы хотите использовать комбинацию charindex и reverse для обработки этого соответствующим образом.SUBSTRING(path,len(path) - charindex('/',reverse(path))).Это не будет проанализировано, но должно привести вас к правильному пути.

В обычном режиме это возвращает строку, начиная с самого правого '/' пути, до конца строки.

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