to_lower[]和to_upper[]是简单数组,含有小写和大写字符,对应字符集的每个成员。例如:
to_lower['A'] should contain 'a'
to_upper['a'] should contain 'A'
sort_order[]是一个映射,表示如何排列字符的顺序,以便进行比较和排序。通常(但非对于所有字符集)与to_upper[]相同,说明排序对大小写敏感。MySQL排序字符基于sort_order[]元素的值。对于更加复杂的排序规则,参见5.10.5节,“字符串比较支持”的字符串 校对规则讨论。
ctype[]是一个位数组,每个字符为一个元素。(请注意字符值索引to_lower[]、to_upper[]和sort_order[],但用字符值+ 1索引ctype[]。这是传统的转换方法,能够处理EOF)。
m_ctype.h中有下面的位掩码定义:
#define _U 01 /* Uppercase */
#define _L 02 /* Lowercase */
#define _N 04 /* Numeral (digit) */
#define _S 010 /* Spacing character */
#define _P 020 /* Punctuation */
#define _C 040 /* Control character */
#define _B 0100 /* Blank */
#define _X 0200 /* heXadecimal digit */
每个字符的ctype[]条目应为相应的描述字符的位掩码值的联合。例如,'A'是大写字符(_U)以及十六进制整数(_X),因此ctype['A'+1]应包含 值:
_U + _X = 01 + 0200 = 0201