Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
SDA_H Member Откуда: Сообщений: 283 |
Добрый вечер. В таблице 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] Ответить | Цитировать Сообщить модератору |
Кусочек
Guest |
Строку можно инвертировать, тогда последние станут первыми) |
25 окт 17, 15:33 [20899483] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
SDA_H, создайте набор CLR функций для разбора строк. Думаю, полно таких готовых решений. |
25 окт 17, 15:49 [20899557] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1564 |
SDA_H, вам знакомы функции Charindex(), Reverse(), Substring()? |
25 окт 17, 15:53 [20899576] Ответить | Цитировать Сообщить модератору |
Невский 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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
SDA_H Member Откуда: Сообщений: 283 |
Спасибо! |
25 окт 17, 22:11 [20900508] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |