Применение функций для работы с типами данных 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 ).