Вход/Регистрация
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
вернуться

Борри Хелен

Шрифт:

Firebird хранит строки очень экономно, используя простой алгоритм сжатия данных, даже если это тип CHAR или NCHAR. В том случае, когда вы хотите объявить очень большой строковый столбец, помните, что существует множество причин не использовать длинные строки - ограничения клиентской памяти или размеров индекса, а для Firebird 1.0.x еще и декомпрессия строк фиксированной и переменной длины в объявленную длину до того, как они покинут сервер.

Основы использования строк

Атрибут символьных типов CHARACTER SET важен не только для совместимости с интерфейсом локализованных приложений, но также в некоторых случаях для определения размера столбца. Отдельные наборы символов используют несколько байтов для хранения одного символа- обычно два или три в Firebird. Когда используются такие наборы символов, максимальный размер уменьшается в два или три раза.

! ! !

ПРИМЕЧАНИЕ. Атрибут CHARACTER SET в объявлении является необязательным. Если никакой набор символов не определяется на уровне столбца, то атрибут CHARACTER SET устанавливается в значение набора символов по умолчанию для базы данных. Механизм определения набора символов для столбцов и переменных обсуждается более подробно позже в этой главе.

. ! .

Попытка помещения в строковый столбец Firebird строки с длиной, превышающей объявленную, вызывает ошибку переполнения.

Ограничитель строки

Ограничителем строк в Firebird является символ ASCII 39, или одиночная кавычка, или апостроф, например,

StringVar = 'This is a string.';

Двойные кавычки вовсе запрещены для ограничения строк. Вы должны помнить это, если соединяетесь с БД Firebird, используя код приложения, написанного для баз данных InterBase 5, где разрешалось использовать кавычки в качестве ограничителя строк. Строки должны быть исправлены также в исходном коде хранимых процедур и триггеров в базе данных InterBase 5, если вы планируете перекомпилировать их для Firebird.

Конкатенация

Firebird использует стандартный в SQL символ для конкатенации (соединения) строк: двойной символ ASCII с кодом 124, известный как двойная вертикальная черта (||). Он может быть использован для конкатенации строковых констант, строковых выражений и/или значений столбцов, например:

MyBiggerString = 'You are my sunshine, ' || FirstName || ' my only sunshine.';

Символьные элементы могут соединяться с числами и числовыми выражениями для получения алфавитно-цифровых строк. Например, для конкатенации символа '#' с целым:

NEW.TICKET_NOMBER = '#' || NEW.PK_INTEGER;

! ! !

ВНИМАНИЕ! He используйте выражения конкатенации, где один из элементов может иметь значение NULL. Результатом любой конкатенации, содержащей NULL, будет NULL.

. ! .

Управляющие символы

Как правило, Firebird не поддерживает использование управляющих символов для включения непечатаемых кодов или последовательностей в строковые поля. Единственным исключением является "дублирование" символа апострофа (ASCII 39) для включения его в качестве хранимого символа и исключения его интерпретации как терминального ограничителя строки:

. . .

SET HOSTELRY = 'О''Flaherty''s Pub'

. . .

В строках можно хранить непечатаемые символы. Может быть объявлена функция UDF Asciichar (ascii_значение) в библиотеке ib udf, чтобы дать возможность передавать в строки такие символы или их последовательности. Следующий оператор выводит множество текстовых полей - например, во внешний файл - с символами возврата каретки и перевода строки в последнем поле:

INSERT INTO EXTFILE(DATA1, DATA1, DATA3, CRLF)

VALUES ('String1', 'String2', 'String3', Ascii_Char(13) || Ascii_Char(10));

По поводу объявления Asciichar (..) и других функций в библиотеке ib udf смотрите в подкаталоге ../UDF в корневом каталоге инсталляции Firebird скрипт с именем ib udf.sql. Подробности о внешних функциях см. в приложении 1.

Ограничения символьных типов

Ограничения многобайтовых наборов символов

Важно быть в курсе того, как многобайтовые наборы символов влияют на размеры текстовых элементов, особенно имеющих переменный размер. Например, в наборе символов UNICODE FSS даже 256-символьный столбец будет иметь больший размер - потенциально 770 байт- как для хранения данных, так и для поиска. Дальше в этой главе будет много сказано об осторожности, которую вы должны проявить, решая вопрос о хранении текстов для многобайтовых наборов символов.

Ограничения индексов

При решении вопросов размера, набора символов и последовательности сортировки для символьного столбца вам нужно убедиться, что индексируемые столбцы этих типов достаточно ограничены по размеру. В настоящее время (версия 1.5) общий размер любого индекса не может превышать 252 байта- заметьте, байтов, а не символов. Многобайтовые и многие более сложные однобайтовые наборы символов используют много больше байтов, чем простые наборы символов. Многосегментные индексы используют дополнительные байты, как и последовательности сортировки. Просчитайте количество байтов в процессе проектирования!

  • Читать дальше
  • 1
  • ...
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: