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

Откуда: Харків
Сообщений: 1233
Есть табличка, в поле которой лежит текстовая строка, но сконверченная в image.
В строке записан пусть к файлу на диске.
Нужно одним запросом вычитать название файла для дальнейшего сравнения.
Т.е. запрос
select cast(cast(MyField as binary(200)) as varchar(200)) as filepath from mytable 
возвращает набор строк- полных путей.
Названия файла- строго 30 символов.
И по идее если выполнить REVERSE(substring(REVERSE(filepath ),1,30)) то я и получу нужный набор.
Но только после вытягивания из имеджа, реверс не работает ни напрямую, ни через временную таблицу, ни через курсор.
Может есть возможность как в оракле выполнить substring с конца строки?
Помогите плиз!
7 окт 09, 17:09    [7754734]     Ответить | Цитировать Сообщить модератору
 Re: Тривиальная задачка  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36824
igor2222
Но только после вытягивания из имеджа, реверс не работает ни напрямую, ни через временную таблицу, ни через курсор.
Так и молвит человечьим голосом: "не работаю"?
7 окт 09, 17:12    [7754758]     Ответить | Цитировать Сообщить модератору
 Re: Тривиальная задачка  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Человеческим голосом выдает набор NULL строк. :)
7 окт 09, 17:13    [7754774]     Ответить | Цитировать Сообщить модератору
 Re: Тривиальная задачка  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
автор
после вытягивания из имеджа, реверс не работает ни напрямую, ни через временную таблицу, ни через курсор
Что там юзается в качестве разделителя уровней вложенности каталогов и имен файлов ? Если "\", то что у Вас выдаёт этот фрагмент:
declare @t table(s varchar(200))
insert into @t 
select 'c:\Program Files\Microsoft Office\Clipart\Popular\AMIDEA.WMF' union all
select 'AMIDEA.WMF'
select s,filename=substring(s,isnull(len(s)-nullif(charIndex('\',reverse(s)),0)+2,1),len(s))
from @t
7 окт 09, 17:29    [7754861]     Ответить | Цитировать Сообщить модератору
 Re: Тривиальная задачка  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Ozzy-Osbourne
Что там юзается в качестве разделителя уровней вложенности каталогов и имен файлов ? Если "\", то что у Вас выдаёт этот фрагмент:
declare @t table(s varchar(200))
insert into @t 
select 'c:\Program Files\Microsoft Office\Clipart\Popular\AMIDEA.WMF' union all
select 'AMIDEA.WMF'
select s,filename=substring(s,isnull(len(s)-nullif(charIndex('\',reverse(s)),0)+2,1),len(s))
from @t

Спасибо огромное! То, что надо!
7 окт 09, 17:48    [7754984]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить