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

Откуда: Москва
Сообщений: 4540
Записываю в поле типа Image текстовые данные :
DECLARE @tt VarChar
SET @tt = 'dfsdfs'
UPDATE O_pictures
SET annotation = CAST(@tt AS Image)
WHERE id_name =  546

Как мне прочитать то что я туда записал, блин.... Подскажите?
11 фев 05, 16:27    [1316313]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
SanyL
Записываю в поле типа Image текстовые данные :
DECLARE @tt VarChar
SET @tt = 'dfsdfs'
UPDATE O_pictures
SET annotation = CAST(@tt AS Image)
WHERE id_name =  546

Как мне прочитать то что я туда записал, блин.... Подскажите?


Прикольно :-)

SELECT annotation
FROM O_pictures
WHERE id_name = 546
11 фев 05, 16:30    [1316334]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
Да, и прежде, чем читать, запишите всё-таки туда чего-нибуть:
DECLARE @tt VarChar(100)
SET @tt = 'dfsdfs'
UPDATE O_pictures
SET annotation = CAST(@tt AS Image)
WHERE id_name =  546
11 фев 05, 16:33    [1316351]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Приведенный пример записывает туда значение @tt в формате Image...
Былоб все так просто:
SELECT annotation
FROM O_pictures
WHERE id_name = 546
То вопроса не былоб... однако подобный запрос дает ответ: 0x64
а я должен получить: значение @tt тобишь в данном случае это 'dfsdfs'
11 фев 05, 16:38    [1316387]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
Glory
Member

Откуда:
Сообщений: 104760
значение @tt тобишь в данном случае это 'dfsdfs'
С чего вдруг если это image ?
11 фев 05, 16:42    [1316418]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Изначально задача стоит - записать текст в поле типа Image = значит его надо будет оттуда считать потом... и считать как текст... Записать я записал - а вот решил попробовать считать - ни как...

Изначально @tt это 'dfsdfs' и тип его VarChar Я его пишу в базу и конверчу в Image.... Как мне его получить назад? Из поля Image содержащего значение 0х64 свое значение 'dfsdfs' - вот суть вопроса..
11 фев 05, 16:52    [1316472]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ну если CAST(@tt AS Image) то наверное CAST(annotation AS varchar)
11 фев 05, 16:54    [1316479]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Обратно не конвертит!
Из типа Image можно конвертить в binary,varbinary, timestamp
11 фев 05, 16:58    [1316499]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ну так значит CAST в CAST
11 фев 05, 17:02    [1316522]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
declare @table table([id] integer,img image)

DECLARE @tt VarChar(50)
SET @tt = 'dfsdfs'

insert into @table([id],img)
select 1, @tt

select [id],cast(cast(img as varbinary(50)) as varchar(50))
from @table
11 фев 05, 17:04    [1316537]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Спасибо... Все гениальное просто - но после целого дня проведенного в головоломке с Twain + Delphi бошка пухнет... Кстати может ты знаешь как в дельфе работать со сканерами... (компонент ActiveX управление сканированием Kodak Image)
11 фев 05, 17:08    [1316553]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31604
SanyL
Изначально задача стоит - записать текст в поле типа Image = значит его надо будет оттуда считать потом... и считать как текст... Записать я записал - а вот решил попробовать считать - ни как...

Изначально @tt это 'dfsdfs' и тип его VarChar Я его пишу в базу и конверчу в Image.... Как мне его получить назад? Из поля Image содержащего значение 0х64 свое значение 'dfsdfs' - вот суть вопроса..

Да вы ответы читайте внимательнее. Поле типа VarChar имеет длинну только один символ. 'dfsdfs' туда записать нельзя, можно только 'd'. Вот 0х64 - это код буквы 'd' и есть.
11 фев 05, 17:08    [1316557]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Да ошибка была это я уже понял сам и немного переделал пример (правда неозвучил)
UPDATE O_pictures
SET annotation = CAST('dfsdf' AS Image)
WHERE id_name =  546

Но ответ итоговый получен... Спасибо...
11 фев 05, 17:14    [1316577]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Появился следующий вопрос: записывать - записываю в это поле, а когда считываю то получаю строку урезанную сильно...

Данные которые записываю:
interpreted as 2049 and the two-digit year 50 is interpreted as 1950. Many client applications, such as those based on OLE Automation objects, use a cutoff year of 2030. SQL Server provides a configuration option (two digit year cutoff) that changes the cutoff year used by SQL Server and allows the consistent treatment of dates. The safest course, however, is to specify four-digit years.

так считываю:
SELECT CAST(CAST(annotation AS varbinary) AS varchar)
FROM O_pictures
WHERE id_name =  546

Получаю в итоге:
interpreted as 2049 and the tw

Есть подозрение что наверное я неправильно читаю? Вот только тогда как надо читать?
11 фев 05, 18:57    [1316867]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
alexeyvg
... Да вы ответы читайте внимательнее. Поле типа VarChar имеет длинну только один символ. 'dfsdfs' туда записать нельзя, можно только 'd'. Вот 0х64 - это код буквы 'd' и есть.


What's wrong with you. Yuo've stepped on this rake already. Does it nessesary to step one more time?
Define size of your varchar type EXPLICITLY

BOL->char and varchar
...
Remarks
When n is not specified in a data definition or variable declaration statement, the default length is 1. When n is not specified with the CAST function, the default length is 30.
...


PS. And regarding your subject - you should be more modest
11 фев 05, 19:06    [1316882]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Подскажите если можете как обойти "this rake".... И правли я в том что ошибка именно в чтении данных - а записи все нормально?
11 фев 05, 19:28    [1316913]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
SanyL
Подскажите если можете как обойти "this rake".... И правли я в том что ошибка именно в чтении данных - а записи все нормально?

I guess in reading:
...
Remarks
When n is not specified in a data definition or variable declaration statement, the default length is 1. When n is not specified with the CAST function, the default length is 30.
...

+
SELECT CAST(... AS varchar)
=
SELECT CAST(... AS varchar(30))

Eh?

PS. Anyvay, what's point in keeping data in image if you cast it back to varchar during reading?
11 фев 05, 19:33    [1316926]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Подскажите пожалуйста как? как мне прочитать всю запись... она может быть довольно большой (это анотация книги - краткое описание)
11 фев 05, 20:10    [1316991]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
On client:
How To Access and Modify SQL Server BLOB Data by Using the ADO Stream Object
On server:
Managing ntext, text, and image Data
11 фев 05, 20:28    [1317008]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
mikhail_n
Guest
Ну а тип text зачем то ведь существует...
11 фев 05, 20:29    [1317011]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
mikhail_n
Ну а тип text зачем то ведь существует...

What's is the difference? They are all BLOBs...
11 фев 05, 20:33    [1317015]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3295
SanyL
... она может быть довольно большой (это анотация книги - краткое описание)

Не встречал еще аннотаций длиннее 4000 символов. Сделайте поле в таблице не Image, а VarChar(4000), и проблема отпадет сама собой.

На будущее: вам уже несколько человек указали на вашу же ошибку, которую вы из раза в раз с удовольствием повторяете - забудьте про тип VARCHAR, и начните наконец использовать тип VARCHAR(N), где N - максимальная длина строки, могущей храниться в этом поле таблицы. Не укажете длину - сиквел обрежет до одного символа. То же самое касается и переменных строкового типа, кстати.
11 фев 05, 22:54    [1317168]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос вопросов  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Это предложение поступило от меня в первые 5 минут = но было отвергнуто... т.к. эта таблица кроме нашего склада еще на трех складах имеется а также в головном офисе... данные из них постоянно рассылаются - и поэтому нельзя просто так взять и изменить тип поля
11 фев 05, 23:28    [1317189]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить