• 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() 就不能用于更改字符集。

  • 相关阅读:
    vue-显示linux日志乱码,web终端组
    VS+Qt+C++ GDAL读取tif图像数据显示
    Ubuntu 生成ffmpeg安卓全平台so
    15年磨一剑,亚马逊云科技数据产品掌门人 Swami 揭秘云原生数据战略的三大关键要素
    如何在 Google Analytics 中设置增强型电子商务
    View 自定义 - 属性 xml
    【案例】3D地球(vue+three.js)
    系统学习Linux-防火墙(Firewall)
    从RabbitMQ平滑迁移到RocketMQ技术实战
    C语言的语句与程序的基本结构
  • 原文地址:https://blog.csdn.net/weixin_49114503/article/details/141064535