• Mysql convert函数、convert用法、字符串转数字、字符串转日期、类型转换函数


    Mysql提供了两种将值转换成指定数据类型的函数

    • CONVERT函数:用于将值转换为指定的数据类型或字符集
    • CAST函数 :用于将值转换为指定的数据类型。更多内容参考:Mysql cast函数

    以下内容基于mysql8.0进行讲解。

    Mysql 8.0 convert函数官网

    一、语法

    1.1、转换指定数据类型

    语法如下:

    CONVERT(expr,type)
    

    convert(expr,type)语法与 CAST(expr AS type)是等效的,所以支持的数据类型也是一致的,可以直接参考Mysql cast函数

    参数说明:

    参数描述
    expr必填。要转换的值、列名
    type必填。要转换成的数据类型。mysql版本不同,支持的数据类型不同,使用时需注意。

    数据类型支持如下

    类型描述备注
    DATE将 value 转化为 DATE 类型。 格式: “YYYY-MM-DD”
    DATETIME将 value 转化为 DATETIME 类型。格式: “YYYY-MM-DD HH:MM:SS”
    DECIMAL[(M[,D])]将 value 转化为 DECIMAL 类型。使用可选的 M 和 D 参数指定最大位数(M)和小数点(D)后的位数
    TIME将 value 转化为 TIME 类型。格式: “HH:MM:SS”
    CHAR将 value 转化为 CHAR 类型 (固定长度的字符串)
    NCHAR将 value 转化为 NCHAR (类似 CHAR, 但生成一个具有国家字符集的字符串)
    SIGNED将 value 转化为 SIGNED (有符号的 64 位整数)
    UNSIGNED将 value 转化为 UNSIGNED (无符号 64 位整数)
    BINARY将 value 转化为 BINARY (二进制字符串)
    DOUBLE将value转化为DOUBLE类型Added in MySQL 8.0.17
    FLOAT将value转化为FLOAT类型 。Added in MySQL 8.0.17

    更多内容参考官网:Mysql 8.0 cast函数官网

    1.2、转换指定字符集

    CONVERT函数用于将字符串expr的字符集变成transcoding_name

    语法结构

    CONVERT(expr USING transcoding_name)
    
    • expr: 要转换的值
    • transcoding_name: 要转换成的字符集
    -- utf8mb4
    SELECT CHARSET('ABC');
    -- gbk
    SELECT CHARSET(CONVERT('ABC' USING gbk));
    SELECT CONVERT('abc' USING utf8mb4);
    

    二、示例

    1.将值转换为DATE数据类型

    -- 2022-05-25
    SELECT CONVERT('2022-05-25', DATE);
    -- 2022-05-25 17:58:48
    SELECT NOW();
    -- 2022-05-25
    SELECT CONVERT(NOW(), DATE);
    

    2.将值转换为DATETIME数据类型

    -- 2022-05-25 00:00:00
    SELECT CONVERT('2022-05-25', DATETIME);
    

    3.将值转换为TIME数据类型

    -- 14:06:10
    SELECT CONVERT('14:06:10', TIME);
    -- 2022-05-25 17:25:12
    SELECT NOW();
    -- 17:25:12
    SELECT CONVERT(NOW(), TIME);
    

    4.将值转换为CHAR数据类型

    -- '150'
    SELECT CONVERT(150, CHAR);
    -- 'Hello World437'
    SELECT CONCAT('Hello World',CONVERT(437, CHAR));
    

    5.将值转换为SIGNED数据类型

    -- 5
    SELECT CONVERT('5.0', SIGNED);
    -- 2
    SELECT (1 + CONVERT('3', SIGNED))/2;
    -- -5
    SELECT CONVERT(5-10, SIGNED);
    -- 6
    SELECT CONVERT(6.4, SIGNED);
    -- -6
    SELECT CONVERT(-6.4, SIGNED);
    -- 7
    SELECT CONVERT(6.5, SIGNED);
    -- -7
    SELECT CONVERT(-6.5, SIGNED);
    

    6.将值转换为UNSIGNED数据类型

    -- 5
    SELECT CONVERT('5.0', UNSIGNED);
    -- 6
    SELECT CONVERT(6.4, UNSIGNED);
    -- 0
    SELECT CONVERT(-6.4, UNSIGNED);
    -- 7
    SELECT CONVERT(6.5, UNSIGNED);
    -- 0
    SELECT CONVERT(-6.5, UNSIGNED);
    

    7.将值转换为DECIMAL数据类型

    -- 9
    SELECT CONVERT('9.0', DECIMAL);
     
    -- DECIMAL(数值精度,小数点保留长度)
    -- DECIMAL(10,2)可以存储最多具有8位整数和2位小数的数字
    -- 精度与小数位数分别为10与2
    -- 精度是总的数字位数,包括小数点左边和右边位数的总和
    -- 小数位数是小数点右边的位数
    -- 9.50
    SELECT CONVERT('9.5', DECIMAL(10,2));
    -- 99999999.99
    SELECT CONVERT('1234567890.123', DECIMAL(10,2));
    -- 220.232
    SELECT CONVERT('220.23211231', DECIMAL(10,3));
    -- 220.232
    

    三、cast与convert的区别

    CAST() 和 CONVERT() 都可以更改 MySQL 中的数据类型。主要区别在于 CONVERT() 还可以将数据的字符集转换为另一个字符集。CAST() 就不能用于更改字符集。

  • 相关阅读:
    计算机专业的未来展望
    递归:深度优先搜索
    palywright: API测试(APIRequestContext, APIResponse)
    如何利用智慧社区的优势来创建解决方案
    96. 不同的二叉搜索树
    力扣每日一道系列 --- LeetCode 160. 相交链表
    浅析v-model语法糖的实现原理与细节知识及如何让你开发的组件支持v-model
    Notion AI会员订阅付费
    事件委托代理
    C++ 输入输出流
  • 原文地址:https://blog.csdn.net/weixin_49114503/article/details/141064535