Иногда в символьных полях требуется хранить не просто произвольные данные, но и данные, содержащие 0. Конечно, вполне можно такие данные хранить и в Blob. Но для коротких строк (примерно до 255 символов) Blob слишком "тяжел" и неудобен. Наиболее заманчивым представляется хранение GUID в двоичном виде (как в MS SQL – специальное 16-байт поле), т. к. в
строковом виде GUID получается примерно раза в два длиннее, а при большом количестве записей это может составить существенный "лишний" объем данных.
Однако, практически все клиентские библиотеки рассматривают строковые поля как C-string, т. е. строки, завершающиеся символом #0. Собственно, касается это TField и его вариаций. Единственным способом работать со строками с OCTETS остаются компоненты FIBQuery из FIBC (FIBPlus) и IBSQL из IBX. Эти компоненты в качестве полей напрямую используют XSQLVAR, таким образом считываемая и записываемая строка не подвергается никаким преобразованиям, что позволяет хранить в поле CHARACTER SET OCTETS любые символы, включая #0.
Других особенностей при работе с этим набором символов нет.
Литература:
- IB Language Reference, глава 8 – Character Sets and Collation Orders
- Хранение GUID и размер индексов