Resumo : neste tutorial, você aprenderá como usar a CAST()
função MySQL para converter um valor de um tipo em outro tipo.
Introdução à função MySQL CAST
A CAST()
função permite converter um valor de um tipo em outro tipo. A sintaxe da CAST()
função MySQL é a seguinte:
CAST(expression AS TYPE);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O tipo de destino pode ser qualquer um dos seguintes tipos: BINARY, CHAR, DATE, DATETIME, TIME, DECIMAL, SIGNED ou UNSIGNED.
Na prática, você costuma usar a CAST()
função para retornar um valor com um tipo especificado para comparação nas cláusulas WHERE , JOIN e HAVING .
Exemplos de funções CAST do MySQL
Vamos dar uma olhada em alguns exemplos de uso da CAST()
função.
1) Exemplos simples de funções MySQL CAST
No exemplo a seguir, o MySQL converte uma string em um número inteiro implicitamente antes de fazer um cálculo:
SELECT (1 + '1')/2;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------+
| (1 + '1')/2 |
+-------------+
| 1 |
+-------------+
1 row in set (0.01 sec)
Linguagem de código: JavaScript ( javascript )
Para converter explicitamente uma string em um número inteiro, você usa a CAST()
função como a seguinte instrução:
SELECT (1 + CAST('1' AS UNSIGNED))/2;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+-------------------------------+
| (1 + CAST('1' AS UNSIGNED))/2 |
+-------------------------------+
| 1.0000 |
+-------------------------------+
1 row in set (0.01 sec)
Linguagem de código: JavaScript ( javascript )
A instrução a seguir converte explicitamente um número inteiro em uma string e concatena a string com outra string:
SELECT CONCAT('MySQL CAST example #',CAST(2 AS CHAR));
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+------------------------------------------------+
| CONCAT('MySQL CAST example #',CAST(2 AS CHAR)) |
+------------------------------------------------+
| MySQL CAST example #2 |
+------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: PHP ( php )
2) Usando a função MySQL CAST() com exemplos de dados de tabela
Vamos dar uma olhada na orders
tabela no banco de dados de exemplo :
A consulta a seguir recupera os pedidos cujas datas obrigatórias são janeiro de 2003:
SELECT
orderNumber,
requiredDate
FROM
orders
WHERE
requiredDate BETWEEN '2003-01-01' AND '2003-01-31';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como o tipo de dados da requireDate
coluna é DATE
, o MySQL precisa converter as strings literais: '2003-01-01'
e '2003-01-31'
em valores TIMESTAMPWHERE
antes de avaliar a condição.
Para garantir a segurança, você pode usar a CAST()
função para converter explicitamente uma string em um TIMESTAMP
valor, como segue:
SELECT
orderNumber,
requiredDate
FROM
orders
WHERE
requiredDate BETWEEN CAST('2003-01-01' AS DATETIME)
AND CAST('2003-01-31' AS DATETIME);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+-------------+--------------+
| orderNumber | requiredDate |
+-------------+--------------+
| 10100 | 2003-01-13 |
| 10101 | 2003-01-18 |
| 10102 | 2003-01-18 |
+-------------+--------------+
3 rows in set (0.03 sec)
Linguagem de código: JavaScript ( javascript )
A instrução a seguir converte DEC
valores em CHAR
valores e usa os resultados como argumentos da função CONCAT :
SELECT productName,
CONCAT('Prices(',
CAST(buyprice AS CHAR),
',',
CAST(msrp AS CHAR),
')') prices
FROM products;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+---------------------------------------------+-----------------------+
| productName | prices |
+---------------------------------------------+-----------------------+
| 1969 Harley Davidson Ultimate Chopper | Prices(48.81,95.70) |
| 1952 Alpine Renault 1300 | Prices(98.58,214.30) |
| 1996 Moto Guzzi 1100i | Prices(68.99,118.94) |
| 2003 Harley-Davidson Eagle Drag Bike | Prices(91.02,193.66) |
| 1972 Alfa Romeo GTA | Prices(85.68,136.00) |
| 1962 LanciaA Delta 16V | Prices(103.42,147.74) |
| 1968 Ford Mustang | Prices(95.34,194.57) |
| 2001 Ferrari Enzo | Prices(95.59,207.80) |
....
Resumo
- Use a função MySQL
CAST()
para converter um valor de qualquer tipo em um valor de tipo especificado.