添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这里是 MySQL CAST() 函数的语法:

CAST(expr AS data_type)

CAST(expr AS data_type) 等同于 CONVERT(expr, type)

必需的。 一个需要转换数据类型的值。

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 添加。

    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                     |
    +----------------------------+--------------------------+-----------------------------------------+