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

Откуда:
Сообщений: 8
Подскажите, как осуществить поиск/замену подстроки в поле image?
Размер данных от 22 кил до нескольких мег.
PATINDEX к сожалению с image не работает...
28 фев 05, 22:07    [1350882]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
image можно "порезать" substring-ом...
1 мар 05, 06:46    [1351119]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
VasyaSh
Member

Откуда:
Сообщений: 8
половина задачи решена. image переведен в text, замена подстроки произведена.
не подскажите, а что делать дальше? как обратно предобразовать текст в двоичные данные? т.е. строку '0xD0CF11E0A1B11AE100000.......' засунуть в поле image?
1 мар 05, 16:22    [1353438]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ua-uz_6i2c.asp
2 мар 05, 08:36    [1354631]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
VasyaSh
Member

Откуда:
Сообщений: 8
не совсем то. данная функция переводит строковую переменную в бинарный код (аналог CAST), а меня интересует явное преобразование, т.е.:
select cast('0xD0' as varbinary) выдаст результат 0x30784430
а меня интересует:
некая_функция('0xD0') -> 0xD0
2 мар 05, 11:51    [1355375]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
exec('select cast(0xD0 as varbinary)')
2 мар 05, 12:36    [1355623]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Вернее, хотел сказать
exec('select cast(' + '0xD0' + ' as varbinary)')
2 мар 05, 12:37    [1355630]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
VasyaSh
Member

Откуда:
Сообщений: 8
Оно конечно так. Но в практическом использовании сталкиваемся с некоторыми проблемами:
1. целиком закатать строку, содержащуюся в поле text мы не можем, поэтому приходится ее резать на куски.
2. переменные внутри оператора exec живут сами по себе, передавать значение для последующего использования невозможно. единственный вариант - использовать в качестве буфера обмена таблицу. т.е. сначала режем кусок текста, сохраняем его в таблице, внутри оператора exec читаем, преобразуем, сохраняем. потом внешней командой клеим.

попробую реализовать, единственное что смущает - это производительность такого варианта.
2 мар 05, 19:09    [1357792]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
Glory
Member

Откуда:
Сообщений: 104760
VasyaSh
2. переменные внутри оператора exec живут сами по себе, передавать значение для последующего использования невозможно. единственный вариант - использовать в качестве буфера обмена таблицу. т.е. сначала режем кусок текста, сохраняем его в таблице, внутри оператора exec читаем, преобразуем, сохраняем. потом внешней командой клеим.

попробую реализовать, единственное что смущает - это производительность такого варианта.


declare @in varchar(10), @sql nvarchar(4000), @out varbinary
set @in='0xD0'
set @sql = N'select @out = '+@in

exec sp_executesql @sql, N'@out varbinary OUTPUT', @out = @out OUTPUT
select @out
2 мар 05, 19:15    [1357804]     Ответить | Цитировать Сообщить модератору
 Re: Замена подстроки в поле image  [new]
VasyaSh
Member

Откуда:
Сообщений: 8
Господа! Всем огромное спасибо. Проблема решена.

Пару слов о причинах, породивших проблему:
существует таблица с полем image, предназначенную для хранения различных файлов. в основном это файлы Word, созданные на основе шаблонов .dot. шаблоны хранятся на сетевом ресурсе. некоторое время назад этот ресурс физически перестал существовать. после этого файлы из таблицы стало проблематично читать, т.к. оказалось, что в теле файлов .doc сохраняется путь к этому несуществующему ресурсу. и пока application word не убедится в отсутствии этого сетевого ресурса, файл не открывается, word висит. после замены пути к ресурсу последовательностью нулей проблема снимается.
2 мар 05, 21:40    [1358005]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить