5.10.4. 字符定义数组

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

关注编程学问公众号