Поделиться через


Применение функций для работы с типами данных text, ntext и image

Следующие функции используются исключительно с данными типа text, ntext и image.

  • Функция TEXTPTR возвращает объект типа binary(16), который содержит указатель на экземпляр типа text, ntext или image. Указатель остается допустимым до тех пор, пока строка не будет удалена.

  • Функция TEXTVALID проверяет, является ли данный текстовый указатель допустимым.

Текстовые указатели передаются в инструкции Transact-SQL READTEXT, UPDATETEXT, WRITETEXT, PATINDEX, DATALENGTH и SET TEXTSIZE, которые применяются для изменения данных типа text, ntext и image.

В инструкциях Transact-SQL к данным типа text, ntext и image можно обращаться с помощью указателей или адресов данных.

Следующий пример использует функцию TEXTPTR, чтобы найти столбец типа text (pr_info), связанного со столбцом pub_id0736 в таблице pub_info базы данных pubs. Вначале объявляется локальная переменная @val. Затем текстовый указатель (длинная двоичная строка) помещается в переменную @val и передается в качестве параметра инструкции READTEXT. Инструкция возвращает 10 байт, начиная с пятого байта (смещение 4).

ПримечаниеПримечание

Чтобы запустить данный пример, необходимо установить базу данных pubs. Дополнительные сведения об установке базы данных pubs см. в разделе Загрузка образцов баз данных Northwind и pubs.

USE pubs
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info) FROM pub_info
WHERE pub_id = '0736'
READTEXT pub_info.pr_info @val 4 10

Ниже приводится результирующий набор.

(1 row(s) affected)

pr_info
----------------------------------------
 is sample

Поддерживается явное преобразование типов с помощью функции CAST: преобразование из типа text в тип varchar, из типа ntext в тип nvarchar и из типа image в тип varbinary или binary, но данные типа text или image усекаются до 8 000 байт, а данные типа ntext усекаются до 4 000 символов (8 000 байт). Преобразование данных типа text, ntext или image в другой тип не поддерживается ни явно, ни неявно. Однако возможно косвенное преобразование данных типа text, ntext, или image. Например: CAST( CAST( text_column_name AS varchar(10) ) AS int ).