4.6.4 Массивы определения символов
Простые массивы to_lower[]
и to_upper[]
содержат символы верхнего и
нижнего регистров, соответствующие каждому из символов набора. Например:
to_lower['A'] should contain 'a'
to_upper['a'] should contain 'A'
sort_order[]
- карта, устанавливающая правила упорядочивания символов для
сравнения и сортировки. Во многих наборах символов эта таблица совпадает с
to_upper[]
(благодаря чему при сортировке регистр символов не
учитывается). MySQL сортирует символы в соответствии со значением
sort_order[символ]
. Более сложные правила упорядочивания строк
разъясняются ниже. See section 4.6.5 Поддержка упорядочивания строк.
ctype[]
представляет собой массив битов, по одному элементу на каждый из
символов. (Массивы to_lower[]
, to_upper[]
, и sort_order[]
индексируются по
значению символа, а ctype[]
- по значению символа + 1. Это позволяет
обрабатывать символы EOF
).
В файле `m_ctype.h' приведены следующие определения битовых масок:
#define _U 01 /* верхний регистр */
#define _L 02 /* нижний регистр */
#define _N 04 /* число (цифра) */
#define _S 010 /* символ пробела */
#define _P 020 /* знак пунктуации */
#define _C 040 /* управляющий символ */
#define _B 0100 /* пустой символ */
#define _X 0200 /* шестнадцатеричная цифра */
Значение ctype[]
для каждого из символов должно представлять собой
объединение значений битовых масок, описывающих символ. Например, 'A'
представят собой символ верхнего регистра (_U
) а также шестнадцатеричную
цифру (_X
), поэтому элемент ['A'+1]
должен содержать значение:
_U + _X = 01 + 0200 = 0201