No MySQL, o
CHAR()
A função retorna o caractere para cada inteiro passado. Em outras palavras, você pode passar um ou mais inteiros, e a função irá interpretá-los como valores de código para caracteres de string e retornar a string correspondente para cada valor de código. Sintaxe
A sintaxe fica assim:
CHAR(N,... [USING charset_name])
Onde
N,...
é um ou mais inteiros, e USING charset_name
é um argumento opcional que você pode usar para especificar o conjunto de caracteres a ser usado. Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar o uso básico:
SELECT CHAR(67, 97, 116);
Resultado:
+-------------------+ | CHAR(67, 97, 116) | +-------------------+ | Cat | +-------------------+
Então, se alterarmos um dos inteiros, obteremos uma string diferente:
SELECT CHAR(66, 97, 116);
Resultado:
+-------------------+ | CHAR(66, 97, 116) | +-------------------+ | Bat | +-------------------+
Exemplo 2 – A Cláusula USING
Aqui está um exemplo de como adicionar o
USING
cláusula para especificar a codificação UTF-8:SELECT CHAR(0xc2a9 USING utf8);
Resultado:
+-------------------------+ | CHAR(0xc2a9 USING utf8) | +-------------------------+ | © | +-------------------------+
E aqui está outro exemplo onde eu especifico o ponto de código unicode:
SELECT CHAR(0x027FE USING ucs2);
Resultado:
+--------------------------+ | CHAR(0x027FE USING ucs2) | +--------------------------+ | ⟾ | +--------------------------+
Exemplo 3 – Bytes de resultados múltiplos
Argumentos maiores que 255 são convertidos em vários bytes de resultado. Aqui está um exemplo para demonstrar.
SELECT HEX(CHAR(1,0)), HEX(CHAR(256)), HEX(CHAR(1,1)), HEX(CHAR(257));
Resultado:
+----------------+----------------+----------------+----------------+ | HEX(CHAR(1,0)) | HEX(CHAR(256)) | HEX(CHAR(1,1)) | HEX(CHAR(257)) | +----------------+----------------+----------------+----------------+ | 0100 | 0100 | 0101 | 0101 | +----------------+----------------+----------------+----------------+
E se aumentarmos os números:
SELECT HEX(CHAR(7,0)), HEX(CHAR(1792)), HEX(CHAR(7,7)), HEX(CHAR(1799));
Resultado:
+----------------+-----------------+----------------+-----------------+ | HEX(CHAR(7,0)) | HEX(CHAR(1792)) | HEX(CHAR(7,7)) | HEX(CHAR(1799)) | +----------------+-----------------+----------------+-----------------+ | 0700 | 0700 | 0707 | 0707 | +----------------+-----------------+----------------+-----------------+