to_lower[]
と to_upper[]
は、キャラクタセットの各メンバに対応する、大文字と小文字を格納するシンプルな配列です。次に例を示します。
to_lower['A'] should contain 'a' to_upper['a'] should contain 'A'
sort_order[]
は、文字をどのような照合順序でソートするかを示すマップです。多くの場合(すべてのキャラクタセットについてではありませんが)、これは
to_upper[]
と同じです(ソートで大文字と小文字は区別しません)。MySQL
は sort_order[]
の値に基づいて文字をソートします。複雑なソート
ルールに関しては、項4.10.5. 「文字列照合サポート」
の文字列照合に関する記述を参照してください。
ctype[]
はビット値の配列で、1
文字が 1 要素です。注意:
to_lower[]
、to_upper[]
、sort_order[]
などは文字値でインデックス化しますが、ctype[]
の場合は文字値 + 1
でインデックス化します。これは、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
)であると同時に 16
進数(_X
)でもあるため、ctype['A'+1]
には次の値が含まれます。
_U + _X = 01 + 0200 = 0201