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

Откуда:
Сообщений: 179
Добрый день!
Проблема такая - есть запрос:
  Select TextPTR(imDoc) 
  from dbo.FileTable where imdoc is null

Поле imdoc типа image.
На моей базе указатель возвращает числа в бинарном виде для строки = null (например так - 0xFFFF61AA00000000CD01000006000100), а у клиента приходит null. Почему так может быть?
Читаю документацию TEXTPTR - Если таблица не содержит в строке текстовых данных и если столбец типа text, ntext или image не был инициализирован при помощи инструкции UPDATETEXT, TEXTPTR возвращает указатель со значением NULL.
Но у меня же он тоже не содержит текстовых данных. Непонятно разное поведение серверов БД.
Версии менеджмент студии в обоих случаях 2008R2. у меня enterprise, у клиента express. Может с настройками базы что-то? куда копать?
16 янв 14, 14:05    [15424736]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
create table #t (id int not null primary key, i image null);
insert into #t (id) values (1);

select textptr(i) from #t where i is null;

update #t set i = 0x0 where id = 1;
update #t set i = null where id = 1;

select textptr(i) from #t where i is null;

drop table #t;
16 янв 14, 14:20    [15424816]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
Glory
Member

Откуда:
Сообщений: 104751
Tester666
Читаю документацию TEXTPTR - Если таблица не содержит в строке текстовых данных и если столбец типа text, ntext или image не был инициализирован при помощи инструкции UPDATETEXT, TEXTPTR возвращает указатель со значением NULL.

А еще там написано
In SQL Server 2005 and later versions, for tables with in-row text, TEXTPTR returns a handle for the text to be processed. You can obtain a valid text pointer even if the text value is null.
16 янв 14, 14:21    [15424825]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Если поле image было инициализировано, а потом стало NULL, то TEXTPTR даст значение.
16 янв 14, 14:21    [15424829]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
invm ответил быстрее, пока я думал :-)
16 янв 14, 14:23    [15424843]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
Tester666
Member

Откуда:
Сообщений: 179
спасибо! прояснился вопрос
16 янв 14, 14:36    [15424918]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Инициализировать можно даже значением NULL, что доставляет
create table #t (i int, t image null);
insert into #t (i) values (1);

select textptr(t) from #t;

update #t set t = null;

select textptr(t) from #t;

drop table #t;
16 янв 14, 15:25    [15425258]     Ответить | Цитировать Сообщить модератору
 Re: textptr возвращает null  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Если и версия сервера 2008R2 (о чём не было сказано!),
то почему бы не заменить IMAGE на VARBINARY(MAX)?
16 янв 14, 16:43    [15425700]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить