You are viewing an older version of this section. View current production version.
CAST or CONVERT
{
Both the CAST
and CONVERT
commands perform the same operation.
Casts the input to the given datatype. There is usually no visible effect on the printed value; there is a change only in the rules for comparison and sorting.
Syntax
CONVERT (input, {BINARY | CHAR | DATE | DATETIME[(prec)] |
DECIMAL[(prec [, scale])] | TIME[(prec)] | SIGNED [INTEGER] | UNSIGNED [INTEGER]})
CAST (input AS {BINARY | CHAR | DATE | DATETIME[(prec)] |
DECIMAL[(prec [, scale])] | TIME[(prec)] | SIGNED [INTEGER] | UNSIGNED [INTEGER]})
Return Type
The return type is the datatype specified in the command.
Examples
SELECT CONVERT (-123, UNSIGNED);
****
+-------------------------+
| CONVERT (-123, UNSIGNED) |
+-------------------------+
| 18446744073709551493 |
+-------------------------+
SELECT '2019-01-01', CAST ('2019-01-01' AS TIME);
****
+------------+----------------------------+
| 2019-01-01 | CAST ('2019-01-01' AS TIME) |
+------------+----------------------------+
| 2019-01-01 | 00:20:19 |
+------------+----------------------------+
Cast Operators :>
and !:>
Two operators are provided for data type casting - :>
for casting with the default error behavior, and !:>
which does a “forceful” cast that always succeeds and produces the standard default value for the target data type even if the cast would otherwise produce an error. The data conversion behavior of !:>
is the same as for INSERT IGNORE.
{
For a command that uses a casting operator, you can specify any datatype after the casting operator :>
or !:>
to convert the input value, same as you would specify a column type in a CREATE TABLE
statement.
Examples
SELECT (1 :> DECIMAL(18,2));
****
+----------------------+
| (1 :> DECIMAL(18,2)) |
+----------------------+
| 1.00 |
+----------------------+
In the following example, the SELECT
command returns an error using :>
, while it succeeds and produces a zero value using !:>
:
SELECT (NULL :> DECIMAL(18,2) NOT NULL);
ERROR 2222 (HY000): Tried to convert NULL to a NOT NULL type
SELECT (NULL !:> DECIMAL(18,2) NOT NULL);
+-----------------------------------+
| (NULL !:> DECIMAL(18,2) NOT NULL) |
+-----------------------------------+
| 0.00 |
+-----------------------------------+
In the following example, :>
operator is used with a string datatype for case-sensitive search:
SELECT * FROM Tabview WHERE element_name = "var" :> VARCHAR (50) COLLATE utf8_bin;
****
+------+--------------+
| id | element_name |
+------+--------------+
| 20 | var |
+------+--------------+