Функции для работы с BLOB-данными
С точки зрения поиска информации внутри BLOB-данных все возможные виды BLOB-данных (текст, графика, музыка, видеоизображение и т.п.) рассматриваются СУБД ЛИНТЕР одинаково – как набор слов.
Слово внутри BLOB-данных – это непрерывная последовательность из букв, цифр, знаков подчеркивания и дефисов длиной не более 239 знаков, все остальные знаки, встреченные в BLOB-значении (пробелы, знаки табуляции, графические символы и другие), считаются разделителями и в поиске не участвуют.
Более широкие возможности для работы с BLOB-данными, содержащими только текстовую информацию в различных форматах (DOC, PDF, RTF и т.д.), предоставляют средства полнотекстового поиска (см. документ «Полнотекстовый поиск в базе данных», раздел «Элементы языка»).
Еще один набор функций для работы с BLOB-данными предоставляет утилита inl (см. документ «Командный интерфейс», подраздел «Работа с BLOB-данными»):
blob {insert | clear | append | get} {rowid=<rowid записи> <имя схемы>.<имя таблицы>.<имя столбца> |column=<номер столбца>} {file=<имя файла> |<BLOB-данные>};
Например,
username SYSTEM/MANAGER8 create or replace table test(i int, bl1 blob, bl2 blob); insert into test(i,bl1,bl2) values(1,NULL,NULL); blob insert column=2 333333ABCD; blob append column=3 444444ABCD;
Пример
Пусть в качестве BLOB-данных записан следующий текст:
SELECT $$$S34,$$$S13 FROM $$$SYSRL,$$$USR WHERE $$$S12 =$$$S31 AND $$$S32 =0 AND ACCESS(USER,$$$S11) <> '------';
Этот текст содержит следующий набор слов (с точки зрения функций BLOB):
SELECT S34 S13 FROM SYSRL USR WHERE S12 S31 AND S32 0 ACCESS USER S11
Присутствующие в BLOB-значении символы «$», «,», «=», «)», «(», «<», «>», «'» не являются элементами слов и интерпретируются как разделители.
Каждое слово BLOB-значения имеет смещение – номер (от начала BLOB-значения) первого байта (знака) слова. Смещения начинаются с нуля.
- Определение числа слов BLOB-значения (COUNTBLOB)
- Поиск слова (FINDBLOB)
- Поиск слова в текстовых BLOB-данных (FINDRTF)
- Местоположение искомых элементов текста (GETTEXTPOS)
- Выборка текста (GETTEXT)
- Дать порцию BLOB-значения (GETBLOB)
- Дать порцию BLOB-значения в текстовом виде (GETBLOBSTR)
- Определение длины BLOB-значения (LENBLOB)
- Модификация подстроки BLOB-данных (SET/INSERT)
- Модификация подстрок BLOB-данных (SET/REPLACE)