Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывести символы после разделителя?(MS SQL)  [new]
SDA_H
Member

Откуда:
Сообщений: 275
Добрый вечер.
В таблице T1 есть поле f1 varchar(1000). в нем хранятся значения вида:

\\MOPCIMAGE02\Server\ProjectSource\2016_05_10\001\11_27_23_299\KB510010\GA510050\10883205_01.tif
нужно вывести имя файла(10883205_01.tif) после последнего 10-го разделителя - '\'?
25 окт 17, 15:32    [20899470]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
Кусочек
Guest
Строку можно инвертировать, тогда последние станут первыми)
25 окт 17, 15:33    [20899483]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
SDA_H,

создайте набор CLR функций для разбора строк. Думаю, полно таких готовых решений.
25 окт 17, 15:49    [20899557]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1507
SDA_H,
вам знакомы функции Charindex(), Reverse(), Substring()?
25 окт 17, 15:53    [20899576]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
Невский
Member

Откуда:
Сообщений: 30
SDA_H,

А найти нужно именно после 10го разделителя или финальное название?

declare @s varchar(1000)

set @s='\\MOPCIMAGE02\Server\ProjectSource\2016_05_10\001\11_27_23_299\KB510010\GA510050\10883205_01.tif'

select Reverse(left(Reverse(@s),CHARINDEX('\',Reverse(@s))-1))
25 окт 17, 17:48    [20899985]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
user89
Member

Откуда:
Сообщений: 2083
Невский,

не работает, если в строке не будет символа "\". Так лучше:
declare @t table (s varchar(500))
insert into @t values ('\\MOPCIMAGE02\Some Server\GA510050\10883205_01.tif'), ('abc\'), ('abc'), (''), (null)
select s, right(s, isnull(nullif(charindex('\',reverse(s)),0)-1,8000)) [file_name]
from @t
25 окт 17, 19:18    [20900231]     Ответить | Цитировать Сообщить модератору
 Re: Вывести символы после разделителя?(MS SQL)  [new]
SDA_H
Member

Откуда:
Сообщений: 275
Спасибо!
25 окт 17, 22:11    [20900508]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить