MySQL CAST() 函数使用指南
MySQL CAST()
函数将任意类型的参数值转为指定的类型的值并返回。
CAST()
语法
这里是 MySQL CAST()
函数的语法:
CAST(expr AS data_type)
CAST(expr AS data_type)
等同于 CONVERT(expr, type)
。
参数
-
expr
必需的。 一个需要转换数据类型的值。
-
data_type
必需的。 目标数据类型。您可以使用下面的类型:
-
BINARY[(N)]
: 如果参数为空(0 长度),结果是BINARY(0)
,否则结果是VARBINARY
类型的字符串。 -
CHAR[(N)]
: 结果是VARCHAR
类型的字符串。除非参数为空,结果是CHAR(0)
。 -
DATE
: 结果是DATE
类型的。 -
DATETIME[(M)]
: 结果是DATETIME
类型的,M
是小数秒的位数。 -
DECIMAL[(M[,D])]
: 结果是DECIMAL
类型的。 -
DOUBLE
: 结果是DOUBLE
类型的。它在 MySQL 8.0.17 添加。 -
FLOAT[(p)]
: 按如下规则转换数据类型- 如果没有指定
p
,结果是FLOAT
类型的。 - 如果
0 <= p <= 24
,结果是FLOAT
类型的。 - 如果
25 <= p <= 53
,结果是DOUBLE
类型的。 - 如果
p < 0
或p > 53
,返回一个错误。
- 如果没有指定
-
JSON
: 结果是JSON
类型的。 -
NCHAR[(N)]
: 结果是NCHAR
类型的。 -
REAL
: 结果是REAL
类型的。实际上,如果启用了REAL_AS_FLOAT
它是FLOAT
,否则是DOUBLE
。 -
SIGNED [INTEGER]
: 结果是一个有符号的BIGINT
类型。 -
TIME[(M)]
: 结果是TIME
类型的,M
是小数秒的位数。 -
UNSIGNED [INTEGER]
: 结果是一个无符号的BIGINT
类型。 -
YEAR
: 结果是YEAR
类型的,它在 MySQL 8.0.22 添加。
-
返回值
MySQL CAST()
函数将任意数据类型的值转为指定的数据类型并返回。
CAST()
示例
这里有几个 CAST()
的常用示例
转为二进制
您可以是用 CAST()
函数将一个字符串转为二进制字符串。
SELECT CAST('hello' AS BINARY);
+--------------------------------------------------+
| CAST('hello' AS BINARY) |
+--------------------------------------------------+
| 0x68656C6C6F |
+--------------------------------------------------+
注意, 在 mysql client 中,二进制字符串默认以十六进制的形式打印出来。
您也可以使用 BINARY
操作符获取一个字符串的二进制字符串。如下:
SELECT BINARY 'hello';
+--------------------------------+
| BINARY 'hello' |
+--------------------------------+
| 0x68656C6C6F |
+--------------------------------+
转为 JSON
您可以使用 CAST()
函数将使用字符串表示的 JSON 文档转为 JSON 类型的数据。
SELECT CAST('[1, 2, "a"]' AS JSON);
+-----------------------------+
| CAST('[1, 2, "a"]' AS JSON) |
+-----------------------------+
| [1, 2, "a"] |
+-----------------------------+
转为日期时间
您可以使用 CAST()
函数将使用字符串表示的日期/时间值转为 DATE
, DATETIME
类型的数据。
SELECT
CAST('2022-02-28' AS DATE),
CAST('10:10:10' AS TIME),
CAST('2022-02-28 10:10:10' AS DATETIME);
+----------------------------+--------------------------+-----------------------------------------+
| CAST('2022-02-28' AS DATE) | CAST('10:10:10' AS TIME) | CAST('2022-02-28 10:10:10' AS DATETIME) |
+----------------------------+--------------------------+-----------------------------------------+
| 2022-02-28 | 10:10:10 | 2022-02-28 10:10:10 |
+----------------------------+--------------------------+-----------------------------------------+