No MariaDB,
CONVERT() é uma função interna que converte um valor em outro tipo de dados. Ele aceita um valor de um tipo e retorna um valor do tipo especificado. Você fornece o valor como um argumento ao chamar a função, bem como o tipo para o qual deseja convertê-la.
CONVERT() é semelhante a CAST() . Sintaxe
O
CONVERT() A função pode ser chamada usando a sintaxe ODBC ou a sintaxe SQL92. Sintaxe ODBC:
CONVERT(expr, type) Sintaxe SQL92:
CONVERT(expr USING charset) Onde
expr é o valor a ser convertido, type é o tipo de dados para o qual você deseja convertê-lo. Usando a sintaxe SQL92,
charset é o conjunto de caracteres para o qual você gostaria de convertê-lo. Exemplo
Aqui está um exemplo simples:
SELECT CONVERT(123.45, INT); Resultado:
+----------------------+| CONVERT(123,45, INT) |+----------------------+| 123 |+----------------------+
Isso converteu o valor em um inteiro, que removeu as casas decimais.
Aqui está outro exemplo:
SELECT CONVERT('2020-01-01', DATETIME); Resultado:
+---------------------------------+| CONVERT('2020-01-01', DATETIME) |+---------------------------------+| 2020-01-01 00:00:00 |+---------------------------------+ Nesse caso, convertemos uma string em um
DATETIME tipo de dados. Falha na conversão
No exemplo anterior, fornecemos um
DATE válido string (ou DATE literal). Portanto, o MariaDB conseguiu converter o valor para um DATETIME tipo de dados. No entanto, veja o que acontece quando fornecemos um
DATE inválido fragmento:SELECT CONVERT('1 Jan, 2020', DATE); Resultado:
+------------------------------+| CONVERT('1 de janeiro de 2020', DATA) |+------------------------------+| NULL |+------------------------------+ Aqui, o MariaDB não conseguiu descobrir como converter esse valor e retornou
NULL . Nesse caso, poderíamos usar outra função, como
STR_TO_DATE() para realizar tal conversão:SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y'); Resultado:
+-----------------------------------------+| STR_TO_DATE('1 de janeiro de 2020', '%e %M, %Y') |+----------------------------- ------------+| 2020-01-01 |+------------------------------------------+ Especifique um conjunto de caracteres
A sintaxe SQL92 nos permite especificar um conjunto de caracteres para converter.
Exemplo:
SELECT CONVERT('ไม้เมือง' USING tis620);
Resultado:
+---------------------------------------------- ----+| CONVERT('ไม้เมือง' USANDO tis620) |+--------------------------------------- -----------+| ไม้เมือง |+---------------------------------------------------------- ----+
Alterar o conjunto de caracteres também alterará o agrupamento para ser o agrupamento padrão para esse conjunto de caracteres.
O exemplo acima não demonstra realmente como o conjunto/agrupamento de caracteres mudou.
Felizmente podemos usar funções como CHARSET() e COLLATION() para ver como o conjunto de caracteres e o agrupamento foram alterados:
SELECT
CHARSET('ไม้เมือง') AS a,
COLLATION('ไม้เมือง') AS b,
CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;
Resultado:
+------+-----------------+--------+------------ ----+| um | b | c | d |+------+-----------------+--------+----------------- ---+| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |+------+-----------------+--------+------------- ---+
O primeiro usa o conjunto de caracteres e o agrupamento para minha conexão. O segundo usa o conjunto de caracteres que especificamos explicitamente com CONVERT() , bem como o agrupamento padrão para esse conjunto de caracteres.
Veja esta lista de ordenações disponíveis no MariaDB para obter uma lista completa de ordenações e seus conjuntos de caracteres correspondentes.
Argumentos nulos
Tentando converter null retorna null :
SELECT CONVERT(null, DATETIME);
Resultado:
+-------------------------+| CONVERT(null, DATETIME) |+------------------------+| NULO |+-------------------------+
No entanto, passando null sem especificar o novo tipo de dados resulta em um erro de sintaxe:
SELECT CONVERT(null);
Resultado:
ERRO 1064 (42000):Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MariaDB para a sintaxe correta para usar perto de ')' na linha 1
Argumento ausente
Chamando CONVERT() sem passar um argumento resulta em um erro de sintaxe:
SELECT CONVERT();
Resultado:
ERRO 1064 (42000):Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MariaDB para a sintaxe correta para usar perto de ')' na linha 1