Os Vetores de Definições de Caracteres
to_lower[] e to_upper[] são vetores simples que definemm os caracteres minúsculos e maísculos correspondentes a cada membro do conjunto de caracteres. Por exemplo:
to_lower['A'] deve conter 'a' to_upper['a'] deve conter 'A'
sort_order[] é um mapa indicando como os caracteres devem ser ordenados para propósitos de comparação e ordenação. Para vários conjuntos de caracteres, isto é o mesmo que to_upper[] (que significa ordenar em caso insensitivo). O MariaDB ordenará caracteres baseado no valor de sort_order[caractere]. Para regras mais complicadas de ordenação, veja a discussão sobre ordenação de string abaixo. Leia "Suporte à Ordenação de Strings".
ctype[] é um vetor com valores binários, com um elemento para cada caracter. (Note que to_lower[], to_upper[] e sort_order[] são indexados pelo valor do caracter, mas o ctype[] é indexado pelo valor do caracter + 1. Este é um antigo legado para tratamento de EOF.)
Pode-se encontrar as seguintes máscaras binárias de definições em m_ctype.h:
#define _U 01 /* Maísculo */ #define _L 02 /* Minúsculo */ #define _N 04 /* Numeral (digito) */ #define _S 010 /* Caractere de espaço */ #define _P 020 /* Pontuação */ #define _C 040 /* Caractere de controle */ #define _B 0100 /* Branco */ #define _X 0200 /* Digito heXadecimal */
A entrada ctype[] para cada caracter deve ser a união dos valores da máscara binária que descrevem o caracter. Por exemplo, 'A' é um caracter maiúsculo (_U) bem como um dígito hexadecimal (_X), portanto ctype['A'+1] deve conter o valor: