IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL format() |CAST() |CONVERT()指定特定个数的小数 -> 正文阅读

[大数据]MySQL format() |CAST() |CONVERT()指定特定个数的小数

如果需要指定小数的输出格式,则需要使用下面几个函数:

  • FORMAT(xxx,yyy,zzz)指定xxx有yyy个小数。但是这个函数有个特点,就是整数部分每三个数字就会用分隔符隔开(从小数点左边第一个数开始算的),如果不写zzz这个参数,即只有两个参数,就会以,作为分隔符了。例如45000,如果利用FORMAT(45000,2),最后得到的是45,000.00的形式,再例如FORMAT(45000,4),得到的是45,000.0000
    # 利用FORMAT,从而指定小数最后保留多少个小数点,同时从小数点左边第一个数字往左算,每三个数字
    # 就会有一个分隔符.注意的是,原本FORMAT()有三个参数,如果不写zzz这个参数,就会默认用','作
    # 为分隔符
    mysql> SELECT
        -> name,
        -> FORMAT(salary,4)
        -> FROM employee2;
    +-----------+------------------+
    | name      | FORMAT(salary,4) |
    +-----------+------------------+
    | 小肖      | 30,000.0000      |
    | 小东      | 40,000.0000      |
    | 小非      | 23,456.0000      |
    | 晓飞      | 15,000.0000      |
    | 小林      | 24,000.0000      |
    | 小五      | 4,500.0000       |
    | 张山      | 40,000.0000      |
    | 小肖      | 35,000.0000      |
    | 李四      | 50,000.0000      |
    | 王武      | 56,000.0000      |
    | 猪小屁    | 56,000.0000      |
    | 小玉      | 58,000.0000      |
    | 小张      | 50,000.0000      |
    | 小胡      | 25,000.0000      |
    | 小肖      | 35,000.0000      |
    | 小林      | 20,000.0000      |
    +-----------+------------------+
    16 rows in set (0.00 sec)
  • CAST(xxx AS decimal(12,yyy)):指定xxx有yyy个小数.作用和CONVERT()一样,指定xxx有yyy个小数,但是和FORMAT()不同,他并不会每3个数字就用逗号隔开,例如45000,指定输出3个小数,则CONVERT(45000,DECIMAL(12,3)),将会输出45000.0,并没有逗号隔开.
    mysql> SELECT
        -> name,
        -> CAST(salary AS DECIMAL(12,3)) -- 使用CAST,这时候相当于CONVERT一样,指定有多少个小数,并且不会出现分隔符
        -> FROM employee2;
    +-----------+-------------------------------+
    | name      | CAST(salary AS DECIMAL(12,3)) |
    +-----------+-------------------------------+
    | 小肖      |                     30000.000 |
    | 小东      |                     40000.000 |
    | 小非      |                     23456.000 |
    | 晓飞      |                     15000.000 |
    | 小林      |                     24000.000 |
    | 小五      |                      4500.000 |
    | 张山      |                     40000.000 |
    | 小肖      |                     35000.000 |
    | 李四      |                     50000.000 |
    | 王武      |                     56000.000 |
    | 猪小屁    |                     56000.000 |
    | 小玉      |                     58000.000 |
    | 小张      |                     50000.000 |
    | 小胡      |                     25000.000 |
    | 小肖      |                     35000.000 |
    | 小林      |                     20000.000 |
    +-----------+-------------------------------+
    16 rows in set (0.00 sec)
  • CONVERT(xxx,DECIMAL(12,yyy)):指定xxx有yyy个小数,但是和FORMAT()不同,他并不会每3个数字就用逗号隔开,例如45000,指定输出3个小数,则CONVERT(45000,DECIMAL(12,3)),将会输出45000.0,并没有逗号隔开.
    # 利用CONVERT,在指定有多少个小数的同时,不会出现逗号这样的分隔符,即从小数点左边的第一个数
    # 字开始算,每三个数字并不会向FORMAT一样出现分隔符
    mysql> SELECT
        -> name,
        -> CONVERT(salary,DECIMAL(12,3))
        -> FROM employee2;
    +-----------+-------------------------------+
    | name      | CONVERT(salary,DECIMAL(12,3)) |
    +-----------+-------------------------------+
    | 小肖      |                     30000.000 |
    | 小东      |                     40000.000 |
    | 小非      |                     23456.000 |
    | 晓飞      |                     15000.000 |
    | 小林      |                     24000.000 |
    | 小五      |                      4500.000 |
    | 张山      |                     40000.000 |
    | 小肖      |                     35000.000 |
    | 李四      |                     50000.000 |
    | 王武      |                     56000.000 |
    | 猪小屁    |                     56000.000 |
    | 小玉      |                     58000.000 |
    | 小张      |                     50000.000 |
    | 小胡      |                     25000.000 |
    | 小肖      |                     35000.000 |
    | 小林      |                     20000.000 |
    +-----------+-------------------------------+
    16 rows in set (0.00 sec)

此外,上面三个函数除了分隔符区别外,还有的是在ORDER BY方面,因为FORMAT得到的是一个字符串,所以利用ORDER BY 的时候,此时是基于字典顺序进行排序的,而CONVERT\CAST得到的是一个数字,所以利用ORDER BY 的时候,依旧是按照数字进行排序的

    # 利用CAST,然后利用这个列进行排序输出,由于CAST得到的是一个数字,所以利用ORDER BY
    # 的时候,就是按照数字大小进行排序的
    mysql> SELECT
        -> name,
        -> CAST(salary AS DECIMAL(12,3)) AS cast_salary
        -> FROM employee2
        -> ORDER BY cast_salary; 
    +-----------+-------------+
    | name      | cast_salary |
    +-----------+-------------+
    | 小五      |    4500.000 |
    | 晓飞      |   15000.000 |
    | 小林      |   20000.000 |
    | 小非      |   23456.000 |
    | 小林      |   24000.000 |
    | 小胡      |   25000.000 |
    | 小肖      |   30000.000 |
    | 小肖      |   35000.000 |
    | 小肖      |   35000.000 |
    | 小东      |   40000.000 |
    | 张山      |   40000.000 |
    | 李四      |   50000.000 |
    | 小张      |   50000.000 |
    | 王武      |   56000.000 |
    | 猪小屁    |   56000.000 |
    | 小玉      |   58000.000 |
    +-----------+-------------+
    16 rows in set (0.00 sec)
    
    # 利用FORMAT,然后利用这个列进行排序输出,由于FORMAT得到的是一个字符串,所以利用ORDER BY
    # 的时候,就是按照字典顺序进行排序的
    mysql> SELECT
        -> name,
        -> FORMAT(salary,3) AS format_salary
        -> FROM employee2
        -> ORDER BY format_salary;
    +-----------+---------------+
    | name      | format_salary |
    +-----------+---------------+
    | 晓飞      | 15,000.000    |
    | 小林      | 20,000.000    |
    | 小非      | 23,456.000    |
    | 小林      | 24,000.000    |
    | 小胡      | 25,000.000    |
    | 小肖      | 30,000.000    |
    | 小肖      | 35,000.000    |
    | 小肖      | 35,000.000    |
    | 小五      | 4,500.000     |
    | 小东      | 40,000.000    |
    | 张山      | 40,000.000    |
    | 李四      | 50,000.000    |
    | 小张      | 50,000.000    |
    | 王武      | 56,000.000    |
    | 猪小屁    | 56,000.000    |
    | 小玉      | 58,000.000    |
    +-----------+---------------+
    16 rows in set (0.00 sec)
    
    # 利用CONVERT,然后利用这个列进行排序输出,由于CONVERT得到的是一个数字,所以利用ORDER BY
    # 的时候,就是按照数字大小进行排序的
    mysql> SELECT
        -> name,
        -> CONVERT(salary,DECIMAL(12,3)) AS convert_salary
        -> FROM employee2
        -> ORDER BY convert_salary;
    +-----------+----------------+
    | name      | convert_salary |
    +-----------+----------------+
    | 小五      |       4500.000 |
    | 晓飞      |      15000.000 |
    | 小林      |      20000.000 |
    | 小非      |      23456.000 |
    | 小林      |      24000.000 |
    | 小胡      |      25000.000 |
    | 小肖      |      30000.000 |
    | 小肖      |      35000.000 |
    | 小肖      |      35000.000 |
    | 小东      |      40000.000 |
    | 张山      |      40000.000 |
    | 李四      |      50000.000 |
    | 小张      |      50000.000 |
    | 王武      |      56000.000 |
    | 猪小屁    |      56000.000 |
    | 小玉      |      58000.000 |
    +-----------+----------------+
    16 rows in set (0.00 sec)

这一题中就有讲到输出的格式:考试分数(一)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:17:51  更:2021-10-06 12:19:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:55:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码