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

Откуда: Calgary
Сообщений: 1157
Вот такая ситуация всплыла, в таблице имеется поле BITS тип Image, в нем хранятся в 99.9% случаях в записях простые словосочетания. (Менять тип поля не могу). Есть еще поле BIT_LENGTH (int)

Тип Image, вроде как, depreciated в SQL SERVER 2012.
В непонятках как в это поле вставлять текст. Смотрел MSDN на updatetext и writetext и .write - к сожалению, ничего не сработало. Все как-то сложно и через ж... и не работает.
Есть ли у кого пример работоспособного кода?

Вот как ИЗВЛЕКАЮ данные из этого поля

select LTRIM(RTRIM(CONVERT(varchar(4000),SUBSTRING(BITS, 1, BITS_LENGTH)))) AS SPECIFICATION
from MyTable
25 июн 14, 11:21    [16215812]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31427
Alexander2
Смотрел MSDN на updatetext и writetext и .write - к сожалению, ничего не сработало. Все как-то сложно и через ж... и не работает.
А просто UPDATE тоже не работает?
25 июн 14, 11:42    [16216042]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31427
Alexander2
В непонятках как в это поле вставлять текст.
Это у вас что, операция INSERT или UPDATE?
25 июн 14, 11:43    [16216052]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Элементарно:
declare @t table (f1 image)
insert into @t values (cast('qwerty' as image))
select cast(cast(f1 as varbinary) as varchar) from @t
25 июн 14, 11:48    [16216126]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
alexeyvg
Alexander2
В непонятках как в это поле вставлять текст.
Это у вас что, операция INSERT или UPDATE?

и то и другое, и можно без хлеба ;)
как обеспечить либо insert или update я знаю, вот как текст вставить не понял.
25 июн 14, 12:01    [16216281]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
Владислав Колосов,

спасибо други!

вот пристроил подсказку

insert into WORKORDER_BINARY(WORKORDER_BASE_ID,WORKORDER_TYPE,WORKORDER_LOT_ID,WORKORDER_SPLIT_ID, WORKORDER_SUB_ID, TYPE,BITS,BITS_LENGTH) 
values ('283244','W','1','0','0','D',cast('qwerty' as image),100)

select cast(cast(BITS as varbinary) as varchar) from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'
25 июн 14, 12:10    [16216395]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Alexander2
Владислав Колосов,

спасибо други!

вот пристроил подсказку

insert into WORKORDER_BINARY(WORKORDER_BASE_ID,WORKORDER_TYPE,WORKORDER_LOT_ID,WORKORDER_SPLIT_ID, WORKORDER_SUB_ID, TYPE,BITS,BITS_LENGTH) 
values ('283244','W','1','0','0','D',cast('qwerty' as image),100)

select cast(cast(BITS as varbinary) as varchar) from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'


А лучше перейти на varbinary и не заниматься двухуровневыми кастрированиями
25 июн 14, 12:13    [16216431]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
a_voronin,

Увы,
автор
(Менять тип поля не могу).
делаю кастомную оболочку к базе, которая является основой для программы Visual Manufacturing, все рухнет нафиг.
25 июн 14, 12:19    [16216520]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
или разговор о
values ('283244','W','1','0','0','D',cast('qwerty' as varbinary),100)
25 июн 14, 12:20    [16216541]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
Владислав Колосов,

чтобы быть точным и полезным решением необходимо уточнить и поправиться:

Удалил строку из таблицы и вставил, как предлагалось. Даже добавил размер.

При извлечении таким образом
автор
cast(cast(BITS as varbinary) as varchar)
содержимое буквально кастрируется
delete from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'

insert into WORKORDER_BINARY(WORKORDER_BASE_ID,WORKORDER_TYPE,WORKORDER_LOT_ID,WORKORDER_SPLIT_ID, WORKORDER_SUB_ID, TYPE,BITS,BITS_LENGTH) 
values ('283244','W','1','0','0','D',cast('If tolerance on the diameter of steel bar  is on plus(+) side, 15C --- 155C bare rotors can use III 1 3/4" bar.' as image),110)

select cast(cast(BITS as varbinary) as varchar) from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'
[/quot]

Вот что на выходе: If tolerance on the diameter o


Полноценное извлечение обеспечивается при таком коде:
select LTRIM(RTRIM(CONVERT(varchar(4000),SUBSTRING(BITS, 1, BITS_LENGTH)))) AS SPECIFICATION
from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'
25 июн 14, 19:24    [16219552]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Это я хелп не дочитал, и Вы тоже:
автор
Значение по умолчанию равно 30


cast(cast(f1 as varbinary(4000)) as varchar(4000))

Не уверен, что нарезание подстрок лучше по производительности.
25 июн 14, 21:51    [16220083]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31427
Alexander2
alexeyvg
Это у вас что, операция INSERT или UPDATE?

и то и другое, и можно без хлеба ;)
как обеспечить либо insert или update я знаю, вот как текст вставить не понял.
Просто у всех SQL СУБД нету операции "вставить в поле", поэтому я и спрашиваю. Можно вставить строку (запись), или обновить поле в строке (записи).
Alexander2
Полноценное извлечение обеспечивается при таком коде:
select LTRIM(RTRIM(CONVERT(varchar(4000),SUBSTRING(BITS, 1, BITS_LENGTH)))) AS SPECIFICATION
from WORKORDER_BINARY
where WORKORDER_BASE_ID='283244'
Нужно использовать varchar(max) вместо varchar(4000), что бы не обрезалось, если, конечно, у вас не совсем древняя версия сиквела.
25 июн 14, 22:19    [16220232]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить строку текста в поле типа Image?  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
alexeyvg,

правильное замечание
автор
Нужно использовать varchar(max) вместо varchar(4000),


вдруг там бригадир целую оперу написал ;)
select LTRIM(RTRIM(CONVERT(varchar(Max),SUBSTRING(BITS, 1, BITS_LENGTH)))) AS SPECIFICATION
25 июн 14, 23:49    [16220571]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить