MySQL SELECT 查询(三):查询常用函数大全

news2024/10/23 11:28:26

MySQL SELECT 查询(三):查询常用函数大全

1. 单行函数


单行函数是 SQL 中一类重要的函数,它们可以对单行数据进行处理,并返回单个结果。单行函数可以嵌套使用,并提供灵活的数据处理能力。

1.1 定义

  • 只对单行数据进行操作,每行返回一个结果。
  • 参数可以是列名、表达式或常量。
  • 可以嵌套使用,形成更复杂的表达式。

1.2 数值函数

数值函数用于处理数值数据,提供各种数学运算功能。

函数用法说明
ABS()返回指定数值的绝对值例如:ABS(-5) 返回 5
SIG()返回指定数值的符号值例如:SIG(-5) 返回 -1
PI()返回圆周率 π 的值例如:PI() 返回 3.141592653589793
CEIL()/CEILING()返回大于等于指定数值的最小整数例如:CEIL(3.2) 返回 4
FLOOR()返回小于等于指定数值的最大整数例如:FLOOR(3.2) 返回 3
MOD()返回两个数值相除的余数例如:MOD(10, 3) 返回 1
RAND()返回一个 0 到 1 之间的随机浮点数例如:RAND() 返回一个介于 0 到 1 之间的随机浮点数
RAND(因子)根据指定的因子生成随机数例如:RAND(2) 返回一个介于 0 到 0.5 之间的随机浮点数
ROUND()将数值四舍五入到指定的小数位数例如:ROUND(3.14159, 2) 返回 3.14
ROUND(数值, 保留小数位)将数值四舍五入到指定的小数位数例如:ROUND(3.14159, 2) 返回 3.14
TRUNCATE(数值, 截断位)将数值截断到指定的小数位数例如:TRUNCATE(3.14159, 2) 返回 3.14

1.3 三角函数

三角函数用于处理角度和弧度,并返回相应的三角函数值。

函数用法说明
RADIANS()将角度转换为弧度例如:RADIANS(45) 返回 0.7853981633974483
DEGREES()将弧度转换为角度例如:DEGREES(0.7853981633974483) 返回 45
POW(x, y)返回 x 的 y 次幂例如:POW(2, 3) 返回 8
EXP(x)返回 e 的 x 次幂例如:EXP(1) 返回 2.718281828459045

1.4 进制转换函数

进制转换函数用于将数值从一种进制转换为另一种进制。

函数用法说明
BIN(x)将十进制数值转换为二进制字符串例如:BIN(10) 返回 “1010”
HEX(x)将十进制数值转换为十六进制字符串例如:HEX(10) 返回 “A”
OCT(x)将十进制数值转换为八进制字符串例如:OCT(10) 返回 “12”
CONV(x, f1, f2)将 x 从 f1 进制转换为 f2 进制例如:CONV(10, 10, 2) 返回 “1010”

1.5 字符串函数

字符串函数在 SQL 中用于处理文本数据,允许用户进行多种字符串操作。

函数用法说明
ASCII(char)返回指定字符的 ASCII 码例如:ASCII('A') 返回 65。
CHAR_LENGTH(string)返回字符串的字符数例如:CHAR_LENGTH('Hello') 返回 5。
LENGTH(string)返回字符串的字节数例如:LENGTH('Hello') 返回 5;若为多字节字符,则可能大于此值。
CONCAT(s1, s2, ...)连接多个字符串例如:CONCAT('Hello', ' ', 'World') 返回 ‘Hello World’。
CONCAT_WS(separator, s1, s2, ...)用指定的分隔符连接多个字符串,忽略 NULL 值例如:CONCAT_WS(',', 'Apple', 'Banana', NULL) 返回 ‘Apple,Banana’。
INSERT(str, idx, len, replacestr)replacestr 插入到 str 中,从 idx 开始的 len 个字符位置替换例如:INSERT('Hello', 2, 2, 'XX') 返回 ‘HXXlo’。
REPLACE(str, old_str, new_str)str 中的所有 old_str 替换为 new_str例如:REPLACE('Hello World', 'World', 'SQL') 返回 ‘Hello SQL’。
UPPER(str)将字符串转换为大写例如:UPPER('hello') 返回 ‘HELLO’。
LOWER(str)将字符串转换为小写例如:LOWER('HELLO') 返回 ‘hello’。
LEFT(str, len)返回字符串左侧的 len 个字符例如:LEFT('Hello', 3) 返回 ‘Hel’。
RIGHT(str, len)返回字符串右侧的 len 个字符例如:RIGHT('Hello', 3) 返回 ‘llo’。
LPAD(str, len, padstr)如果字符串长度不足 len,则在左侧用 padstr 填充例如:LPAD('SQL', 10, '-') 返回 ‘-------SQL’。
RPAD(str, len, padstr)如果字符串长度不足 len,则在右侧用 padstr 填充例如:RPAD('SQL', 10, '-') 返回 ‘SQL-------’。
TRIM(str)去除字符串首尾的空格例如:TRIM(' SQL ') 返回 ‘SQL’。
LTRIM(str)去除字符串左侧的空格例如:LTRIM(' SQL') 返回 ‘SQL’。
RTRIM(str)去除字符串右侧的空格例如:RTRIM('SQL ') 返回 ‘SQL’。
TRIM(s1 FROM s2)去除 s2 首尾的 s1 字符例如:TRIM('!#' FROM '!#Hello#!!#') 返回 ‘Hello’。
TRIM(LEADING s1 FROM s2)去除 s2 开头处的 s1 字符例如:TRIM(LEADING '!' FROM '!!!Hello') 返回 ‘Hello’。
TRIM(TRAILING s1 FROM s2)去除 s2 结尾处的 s1 字符例如:TRIM(TRAILING '#' FROM 'Hello###') 返回 ‘Hello’。
REPEAT(str, n)重复 str n例如:REPEAT('A', 3) 返回 ‘AAA’。
SPACE(n)返回 n 个空格字符例如:SPACE(5) 返回 ’ '(5个空格)。
STRCMP(s1, s2)比较两个字符串的大小,返回值:<0(s1 < s2),0(s1 = s2),>0(s1 > s2)例如:STRCMP('abc', 'xyz') 返回 -1。
SUBSTR(str, index, len)返回 str 中从 index 开始的 len 个字符例如:SUBSTR('Hello', 2, 3) 返回 ‘ell’。
LOCATE(substr, str)返回 substrstr 中首次出现的位置,未找到返回 -1例如:LOCATE('o', 'Hello World') 返回 5。
ELT(i, s1, s2, ...)返回列表中第 i 项。i 从 1 开始例如:ELT(2, 'one', 'two', 'three') 返回 ‘two’。
FIELD(s, s1, s2, ...)返回字符串 s 在字符串列表中首次出现的位置例如:FIELD('b', 'a', 'b', 'c') 返回 2。
FIND_IN_SET(s1, s2)返回字符串 s1 在以逗号为分隔符的字符串 s2 中的位置例如:FIND_IN_SET('b', 'a,b,c') 返回 2。
REVERSE(s)反转字符串例如:REVERSE('Hello') 返回 ‘olleH’。
NULLIF(s1, s2)s1s2 相等则返回 NULL,否者返回 s1例如:NULLIF(1, 1) 返回 NULL,NULLIF(1, 2) 返回 1。

1.6 日期和时间函数

获取日期与时间的函数
  • 当前日期和时间

    • CURDATE(), CURRENT_DATE(): 返回当前日期,格式为 YYYY-MM-DD

    • NOW(), SYSDATE(): 返回当前日期和时间,格式为 YYYY-MM-DD HH:MM:SS

    • CURTIME(): 返回当前时间,格式为 HH:MM:SS

       SELECT CURDATE(), CURRENT_DATE(), NOW(), SYSDATE(), CURTIME();
      
  • UTC 日期和时间

    • UTC_DATE: 返回当前 UTC 日期,格式为 YYYY-MM-DD

    • UTC_TIME: 返回当前 UTC 时间,格式为 HH:MM:SS

      SELECT UTC_DATE(), UTC_TIME();
      
日期与时间戳的转换函数
  • 日期转换为时间戳

    • UNIX_TIMESTAMP(date): 返回日期的时间戳(自 1970-01-01 00:00:00 UTC 开始的秒数)。
    • UNIX_TIMESTAMP(): 返回当前日期的时间戳。
  • 时间戳转换为日期

    • FROM_UNIXTIME(timestamp): 返回时间戳对应的日期和时间。

      SELECT UNIX_TIMESTAMP('2023-09-30'), FROM_UNIXTIME(1664355200);
      
获取月份、星期、星期数、天数
  • 日期组成部分

    • YEAR(date): 返回日期的年份。

    • MONTH(date): 返回日期的月份。

    • DAY(date): 返回日期的天数。

    • HOUR(date): 返回日期的小时。

    • MINUTE(date): 返回日期的分钟。

    • SECOND(date): 返回日期的秒。

    • MONTHNAME(date): 返回日期的月份名称。

    • DAYNAME(date): 返回日期的星期名称。

    • WEEKDAY(date): 返回日期的星期索引,周一是 0。

      SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), HOUR(NOW()), 	MINUTE(NOW()), SECOND(NOW());
      
日期的操作函数

在这里插入图片描述
在这里插入图片描述

  • 日期加减

    • DATE_ADD(datetime, INTERVAL expr type): 在日期上增加一个指定的时间间隔。

    • DATE_SUB(datetime, INTERVAL expr type): 在日期上减少一个指定的时间间隔。

      SELECT DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 1 	DAY);
      
日期的格式化

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 日期格式化

    • DATE_FORMAT(date, format): 返回按照指定格式格式化后的日期。

      SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 格式化日期时间为年-	月-日 时:分:秒
      
    • 格式化符号

      • %Y: 四位数字的年份
      • %y: 两位数字的年份
      • %m: 月份(01-12)
      • %d: 月份中的日(01-31)
      • %H: 24小时制的小时(00-23)
      • %i: 分钟(00-59)
      • %s: 秒(00-59)

2. 聚合函数


聚合函数在 SQL 中用于对一组值执行计算,并返回单个结果。这些函数在执行数据分析、统计计算等任务时非常有用。

2.1 常用的聚合函数

函数作用
AVG()计算指定列的平均值
SUM()计算指定列的总和
MAX()返回指定列中的最大值
MIN()返回指定列中的最小值
COUNT()计算指定列中非 NULL 值的数量

2.2 COUNT() 函数详解

COUNT() 函数用于计算指定列中非 NULL 值的数量,它是统计记录总数的首选函数。

  • 计算字段出现次数

    SELECT COUNT(1), COUNT(employee_id), COUNT(*), COUNT(2)
    FROM employees e;
    
    • 注意事项
      • 使用 COUNT(1)COUNT(*) 可以计算表中的记录总数,忽略 NULL 值。
      • 使用 COUNT(具体字段) 会计算该字段非 NULL 值的数量,可能会受到 NULL 值的影响。
      • 在新版本 MySQL 中,COUNT(1)COUNT(*) 的效率高于 COUNT(具体字段)

2.3 AVG()SUM() 的关系

AVG() 函数计算平均值,等于 SUM() 函数除以 COUNT() 函数的结果。

SELECT AVG(salary), SUM(salary) / COUNT(salary),
       AVG(commission_pct), SUM(commission_pct) / COUNT(commission_pct),
       SUM(commission_pct) / 107
FROM employees e;

2.4 GROUP BY 子句

GROUP BY 子句用于对结果集进行分组,并与聚合函数结合使用。

  • 分组查询示例

    SELECT department_id, AVG(salary)
    FROM employees e
    GROUP BY department_id;
    
  • 连续分组

    SELECT department_id, job_id, AVG(salary)
    FROM employees e
    GROUP BY department_id, job_id;
    
  • 注意事项

    • GROUP BY 子句中查询的字段必须在 GROUP BY 子句中列出。
    • GROUP BY 子句通常位于 WHERE 子句之后,ORDER BY 子句之前。

2.5 WITH ROLLUP 选项

WITH ROLLUP 选项可以在 GROUP BY 子句中使用,它会在分组的基础上添加一行,显示每个分组的总计和所有行的总计。

SELECT department_id, AVG(salary)
FROM employees e
GROUP BY department_id WITH ROLLUP;
  • 注意事项
    • 使用 WITH ROLLUP 后不能使用 ORDER BY 子句,因为它会与 ROLLUP 产生的总计行产生冲突。

2.6 HAVING 子句

HAVING 子句用于在 GROUP BY 分组之后对结果集进行过滤。

  • 使用场景

    • 当过滤条件包含聚合函数时,必须使用 HAVING 子句。
    • 通常与 GROUP BY 子句一起使用。
  • 注意事项

    • HAVING 子句的位置在 GROUP BY 子句之后。
    • 由于 HAVING 子句是在分组之后应用过滤,因此它的效率通常低于 WHERE 子句。
    • 在没有聚合函数的情况下,通常使用 WHERE 子句而不是 HAVING 子句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微知-Mellanox网卡如何导出firmware中的config文件以及文件中有些什么?(ini配置文件,8个区)

背景 Mellanox网卡早期版本以及Engineer simple的DPU支持导出配置文件&#xff0c;该配置文件就是用来告诉firmware的行为。但不是mlxconfig真正设置的文件(mlxconfig -d xxx -e -q应该就是把这个文件读取出来&#xff0c;并且有3个文件&#xff0c;包括默认的&#xff0c;当前…

攻防世界2

forgot 发现是32位文件 fgets(s, 32, stdin)限制读入32位字符&#xff0c;无法利用 __isoc99_scanf("%s", v2) 典型的栈溢出 发现cat flag 覆盖v2-v3&#xff0c;覆盖为cat flag的函数地址 exp&#xff1a; from pwn import * context(oslinux,archamd64,log_lev…

芋道快速开发平台学习笔记

1.接口文档配置 基础知识:SpringDoc注解的使用,它是基于OpenAPI 3和Swagger 3的现代化解决方案,相较于旧版的Swagger2即SpringFox,SpringDoc提供了更简洁、更直观的注解方式。 详见springboot集成springdoc-openapi(模拟前端请求)_springdoc-openapi-ui-CSDN博客 doc文档配置…

c++面向对象三大特性——多态详解与虚函数,虚函数底层

目录 前言&#xff1a; 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1多态的构成条件 2.2 虚函数 2.3虚函数的重写 2.4 C11 override 和 final 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 抽象类 3.1 概念 3.2 接口继承和实现继承 4.多态的原理 4.1虚函数表 …

7.1-I2C的中断

I2C的中断与DMA 回顾 HAL_I2C_MASTER_Transmit(&hi2c1,ADRESS,PDate,Size,Time);HAL_I2C_MASTER_Receive(&hi2c1,ADRESS,PDate,Size,Time);通信具体过程如下&#xff1a; 在I2C的轮询模式中 发送时&#xff1a;CPU将以主机0x70 发送 从机 ACK 回复 主机0xAC发送 A…

⽂件的操作

1. 为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化…

深圳大学-Java程序设计-必实验2 类的高级应用

实验目的与要求&#xff1a; 实验目的&#xff1a;熟悉面向对象编程中类的编写。 实验要求&#xff1a; (1).请自行选择2023年成都大运会或2023杭州亚运会。大型运动会通常包括众多比赛项目。请通过分析&#xff0c;抽象它们所共有的性质&#xff0c;定义一个关于比赛项目的抽…

点评项目-6-缓存更新策略、缓存穿透、雪崩

缓存更新策略 使用 redis 缓存记录的信息&#xff0c;有可能在数据库被信息被修改导致信息不一致&#xff0c;使用缓存更新来解决这个问题 缓存更新策略主要有三种&#xff1a; 1.内存淘汰(redis默认开启) 2.超时剔除(给key添加TTL时间) 3.主动更新(编写业务逻辑) 主动更新策…

网络通信与并发编程(一)网络通信、osi五层模型、tcp协议的三次握手与四次挥手

网络通信、osi五层模型、tcp协议的三次握手与四次挥手 文章目录 网络通信、osi五层模型、tcp协议的三次握手与四次挥手一、网络通信二、osi五层模型1.物理层2.数据链路层3.网络层4.传输层5.应用层 三、tcp协议的三次握手与四次挥手 一、网络通信 网络通信是指在网络中的两个或…

Java ==> 数组(入门)

文章目录 前言一、一维数组1.入门操作2.何为null&#xff1f;3.数组可以作为函数的参数4.数组可以作为函数的返回值 二、二维数组1.基础操作2.不规则的二维数组 总结 前言 在Java语言当中&#xff0c;数组是一种基本的数据结构&#xff0c;它存储了固定大小的同类型元素的集合…

告别卡顿!五款Windows录屏工具,让每一帧都清晰流畅

小伙伴们&#xff0c;是不是在寻找一款好用、实用的Windows录屏工具呢&#xff1f;别担心&#xff0c;这次我给大家带来了一款热门录屏工具的详细评测和使用感受&#xff0c;包括福昕录屏、转转录屏、爱拍录屏、OBS录屏和EV录屏。快来看看哪款最适合你吧&#xff01; 一、福昕录…

反射的学习

1、什么是反射 反射允许对封装类的字段&#xff0c;方法和构造函数的信息进行编程访问。 也就是&#xff1a; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 2、获取class对象 获取一个类的字节码文件对象&#xff1a; 方式1&#xff1a;Class.…

linux 环境运行 jenkins.war包,有可能会出现字体问题,jdk版本:11 jenkins 版本:2.420

jenkins的目录&#xff1a; /usr/jenkins 启动命令 java -Djava.awt.headlesstrue sudo timedatectl set-timezone Asia/Shanghai-Xmx1024m -jar jenkins.war --httpPort8090 任意目录启动&#xff1a; nohup java -Djava.awt.headlesstrue -Xms1024m -Xmx1024m -jar /usr/j…

基于opencv答题卡识别判卷

我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色&#xff1a;深度实…

Excel使用技巧:数据-》分列:处理log数据,把有用的信息提取出来;查找Ctrl+F,替换Ctrl+H;通配符

Excel的正确用法&#xff1a; Excel是个数据库&#xff0c;不要随意合并单元格。 数据输入的时候一定要按照行列输入&#xff0c;中间不要留空&#xff0c;不然就没有关联。 数据-》分列&#xff1a;处理log数据&#xff0c;把有用的信息提取出来。 按照向导一步一步操作。…

D36【python 接口自动化学习】- python基础之函数

day36 函数的定义 学习日期&#xff1a;20241013 学习目标&#xff1a;输入输出与文件操作&#xfe63;-49 函数定义&#xff1a;如何优雅地反复引用同一段代码&#xff1f; 学习笔记&#xff1a; 函数的用途 定义函数 调用函数 # 定义函数 def foo():print(foo)print(foo …

数据传送指令

文章目录 MOVXCHGPUSH和POPIN和OUTXLATLEA LDS LESLEALDSLES LAHF SAHFPUSHF POPF总结 MOV MOV dst, src ; dst <-- src可以进行8位或16位数据的传送源操作数可为立即数、寄存器、存储器操作数目的操作数不可为立即数&#xff0c;CS、IP寄存器两操作数必有一个寄…

Hi3244 应用指导

Hi3244 是一款DIP8封装高性能、多模式工作的原边控制功率开关。Hi3244内高精度的恒流、恒压控制机制结合完备的保护功能&#xff0c;使其适用于小功率离线式电源应用中。在恒压输出模式中&#xff0c;Hi3244 采用多模式工作方式&#xff0c;即调幅控制&#xff08;AM&#xff0…

LLM - 配置 ModelScope SWIFT 环境与 Qwen2-VL 模型推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142827217 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 SWIFT …

AI 工具大比拼:ChatGPT 与豆包的魅力与未来展望

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…