第一部分:基础知识 6. 函数 --[MySQL轻松入门教程]

MySQL 提供了丰富的内置函数,涵盖了字符串处理、数值计算、日期时间操作、聚合分析以及控制流等多个方面。这些函数可以帮助用户更高效地进行数据查询和处理。

1.字符串函数

MySQL 提供了丰富的字符串函数来帮助用户处理和操作字符串数据。下面是一些常用的 MySQL 字符串函数及其简要说明:

  1. CONCAT(str1, str2, ...)

    • 将多个字符串连接成一个字符串。
    • 示例:SELECT CONCAT('Hello', ' ', 'World') AS greeting;
  2. CONCAT_WS(separator, str1, str2, ...)

    • 使用指定的分隔符将多个字符串连接起来。
    • 示例:SELECT CONCAT_WS(', ', 'Apple', 'Banana', 'Orange');
  3. INSERT(str, pos, len, newstr)

    • 在给定位置开始,用 newstr 替换 str 中长度为 len 的子串。
    • 示例:SELECT INSERT('abcdefg', 2, 3, 'xyz');
  4. LOWER(str)LCASE(str)

    • 将字符串转换为小写。
    • 示例:SELECT LOWER('HELLO WORLD');
  5. UPPER(str)UCASE(str)

    • 将字符串转换为大写。
    • 示例:SELECT UPPER('hello world');
  6. LEFT(str, len)

    • 返回字符串最左边的 len 个字符。
    • 示例:SELECT LEFT('hello', 2);
  7. RIGHT(str, len)

    • 返回字符串最右边的 len 个字符。
    • 示例:SELECT RIGHT('hello', 3);
  8. SUBSTRING(str, pos, len)SUBSTR(str, pos, len)

    • 从位置 pos 开始提取长度为 len 的子串。
    • 示例:SELECT SUBSTRING('hello', 2, 3);
  9. REPLACE(str, from_str, to_str)

    • 将字符串 str 中的所有 from_str 替换为 to_str
    • 示例:SELECT REPLACE('www.mysql.com', 'w', 'Ww');
  10. TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

    • 移除字符串开头、结尾或两边的指定字符(默认为空格)。
    • 示例:SELECT TRIM(' hello ');
  11. REVERSE(str)

    • 反转字符串。
    • 示例:SELECT REVERSE('hello');
  12. LENGTH(str)

    • 返回字符串的字节长度。
    • 示例:SELECT LENGTH('你好'); (注意中文字符在某些字符集下可能占多字节)
  13. CHAR_LENGTH(str)

    • 返回字符串的字符数。
    • 示例:SELECT CHAR_LENGTH('你好');
  14. LOCATE(substr, str[, pos])POSITION(substr IN str)

    • 返回子串 substr 在字符串 str 中第一次出现的位置。
    • 示例:SELECT LOCATE('bar', 'foobarbar');
  15. INSTR(str, substr)

    • 返回子串 substr 在字符串 str 中第一次出现的位置。
    • 示例:SELECT INSTR('foobarbar', 'bar');

这些函数可以帮助你执行各种字符串处理任务,如文本格式化、搜索、替换等。根据你的具体需求,选择合适的函数可以极大地简化查询和数据处理工作。

2.数值函数

MySQL 提供了一系列数值函数,用于执行数学计算和处理数值数据。以下是一些常用的 MySQL 数值函数及其简要说明:

  1. ABS(X)

    • 返回 X 的绝对值。
    • 示例:SELECT ABS(-32);
  2. CEIL(X)CEILING(X)

    • 返回不小于 X 的最小整数值。
    • 示例:SELECT CEIL(1.23);
  3. FLOOR(X)

    • 返回不大于 X 的最大整数值。
    • 示例:SELECT FLOOR(1.89);
  4. ROUND(X[, D])

    • 返回参数 X 四舍五入后的值,可选参数 D 指定保留的小数位数。
    • 示例:SELECT ROUND(1.298, 1);
  5. TRUNCATE(X, D)

    • 返回数字 X 截断为 D 小数位的结果。如果 D 是负数,则截断(归零)在小数点左侧。
    • 示例:SELECT TRUNCATE(1.999, 1);
  6. MOD(N, M) 或者使用 % 运算符

    • 返回 NM 除后的余数。
    • 示例:SELECT MOD(29, 3);SELECT 29 % 3;
  7. POW(X, Y)POWER(X, Y)

    • 返回 XY 次幂。
    • 示例:SELECT POW(2, 3);
  8. SQRT(X)

    • 返回非负数 X 的平方根。
    • 示例:SELECT SQRT(16);
  9. RAND()RAND(N)

    • 返回一个0到1之间的随机浮点值。RAND(N) 使用 N 作为种子值。
    • 示例:SELECT RAND();
  10. SIGN(X)

    • 返回参数 X 的符号,-1、0 或 1(负数、零或正数)。
    • 示例:SELECT SIGN(-320);
  11. CONV(N, from_base, to_base)

    • 在不同数制之间转换数字 Nfrom_baseto_base 是基数,范围是2到36。
    • 示例:SELECT CONV('A', 16, 10); (将十六进制的 ‘A’ 转换为十进制)
  12. PI()

    • 返回圆周率 π 的值。
    • 示例:SELECT PI();
  13. EXP(X)

    • 返回 e 的 X 次幂 (e^X)。
    • 示例:SELECT EXP(1);
  14. LOG(B, X)LOG(X)

    • 如果指定两个参数,则返回以 B 为底 X 的对数;如果只有一个参数,则返回自然对数。
    • 示例:SELECT LOG(2, 8);
  15. LOG2(X)

    • 返回 X 的以2为底的对数。
    • 示例:SELECT LOG2(8);
  16. LOG10(X)

    • 返回 X 的以10为底的对数。
    • 示例:SELECT LOG10(100);

这些数值函数可以用来执行各种数学运算,从简单的四则运算到更复杂的数学问题求解。根据你的具体需求选择适当的函数可以帮助你有效地进行数值数据的处理和分析。

3.日期和时间函数

MySQL 提供了多种日期和时间函数,用于处理日期时间数据。以下是一些常用的 MySQL 日期和时间函数及其简要说明:

  1. NOW()CURRENT_TIMESTAMP

    • 返回当前的日期和时间。
    • 示例:SELECT NOW();
  2. CURDATE()CURRENT_DATE

    • 返回当前日期。
    • 示例:SELECT CURDATE();
  3. CURTIME()CURRENT_TIME

    • 返回当前时间。
    • 示例:SELECT CURTIME();
  4. DATE(expr)

    • 提取日期部分。
    • 示例:SELECT DATE('2024-06-15 09:30:25');
  5. TIME(expr)

    • 提取时间部分。
    • 示例:SELECT TIME('2024-06-15 09:30:25');
  6. YEAR(date), MONTH(date), DAY(date)

    • 分别提取给定日期中的年份、月份、日等。
    • 示例:SELECT YEAR('2024-06-15'), MONTH('2024-06-15'), DAY('2024-06-15');
  7. HOUR(time), MINUTE(time), SECOND(time)

    • 分别提取给定时间中的小时、分钟、秒等。
    • 示例:SELECT HOUR('09:30:25'), MINUTE('09:30:25'), SECOND('09:30:25');
  8. DATEDIFF(expr1, expr2)

    • 计算两个日期之间的天数差。
    • 示例:SELECT DATEDIFF('2024-06-15', '2024-06-01');
  9. TIMEDIFF(expr1, expr2)

    • 计算两个时间值或日期时间值之间的时间差。
    • 示例:SELECT TIMEDIFF('10:05:30', '09:00:00');
  10. ADDDATE(date, INTERVAL expr unit)DATE_ADD(date, INTERVAL expr unit)

    • 向日期添加指定的时间间隔。
    • 示例:SELECT ADDDATE('2024-06-15', INTERVAL 10 DAY);
  11. SUBDATE(date, INTERVAL expr unit)DATE_SUB(date, INTERVAL expr unit)

    • 从日期减去指定的时间间隔。
    • 示例:SELECT SUBDATE('2024-06-15', INTERVAL 10 DAY);
  12. STR_TO_DATE(str, format)

    • 按照指定格式将字符串转换为日期。
    • 示例:SELECT STR_TO_DATE('15/06/2024', '%d/%m/%Y');
  13. DATE_FORMAT(date, format)

    • 根据指定的格式格式化日期或时间值。
    • 示例:SELECT DATE_FORMAT('2024-06-15 09:30:25', '%W %M %Y');
  14. UNIX_TIMESTAMP([date])FROM_UNIXTIME(unix_timestamp[, format])

    • UNIX_TIMESTAMP 将日期时间转换为 Unix 时间戳(自1970-01-01以来的秒数),而 FROM_UNIXTIME 则是反向操作。
    • 示例:SELECT UNIX_TIMESTAMP('2024-06-15 09:30:25');
    • 示例:SELECT FROM_UNIXTIME(1718676625, '%Y-%m-%d %H:%i:%s');
  15. PERIOD_ADD(P, N)PERIOD_DIFF(P1, P2)

    • PERIOD_ADD 向表示为YYMM或YYYYMM的时期 P 添加 N 个月。
    • PERIOD_DIFF 计算两个表示为YYMM或YYYYMM的时期之间的月份数差异。
    • 示例:SELECT PERIOD_ADD(202406, 5);
    • 示例:SELECT PERIOD_DIFF(202406, 202306);

这些日期和时间函数可以帮助你执行各种与时间相关的计算和操作,如日期间的计算、日期格式化、日期时间的增减等。根据你的具体需求选择适当的函数可以让你更高效地处理日期时间数据。

4.聚合函数

MySQL 提供了多种聚合函数,用于对数据集进行统计分析。这些函数可以用来计算一组值的总和、平均数、计数等。以下是 MySQL 中常用的聚合函数及其简要说明:

  1. COUNT([DISTINCT] expr)

    • 计算行数或非空表达式的数量。
    • COUNT(*) 计算所有行的数量,包括NULL值。
    • COUNT(expr) 计算expr非NULL结果的数量。
    • COUNT(DISTINCT expr) 计算expr不同非NULL结果的数量。
    • 示例:SELECT COUNT(*) FROM orders;
    • 示例:SELECT COUNT(order_id) FROM orders;
    • 示例:SELECT COUNT(DISTINCT customer_id) FROM orders;
  2. SUM([DISTINCT] expr)

    • 返回给定列中所有数值的总和。
    • 如果列中有NULL,则忽略它们。
    • DISTINCT 可选参数确保只考虑不同的值。
    • 示例:SELECT SUM(amount) FROM sales;
    • 示例:SELECT SUM(DISTINCT amount) FROM sales;
  3. AVG([DISTINCT] expr)

    • 返回给定列中所有数值的平均值。
    • 忽略NULL值。
    • DISTINCT 可选参数确保只考虑不同的值。
    • 示例:SELECT AVG(price) FROM products;
    • 示例:SELECT AVG(DISTINCT price) FROM products;
  4. MAX([DISTINCT] expr)

    • 返回给定列中的最大值。
    • 对于字符类型,它返回按字母顺序最后的值。
    • DISTINCT 参数是可选的,并且通常不使用,因为它不影响结果。
    • 示例:SELECT MAX(salary) FROM employees;
  5. MIN([DISTINCT] expr)

    • 返回给定列中的最小值。
    • 对于字符类型,它返回按字母顺序最先的值。
    • DISTINCT 参数是可选的,并且通常不使用,因为它不影响结果。
    • 示例:SELECT MIN(salary) FROM employees;
  6. GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])

    • 将多行字符串连接成一个字符串结果,常用于分组查询。
    • 可以指定排序和分隔符。
    • 示例:SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM users GROUP BY department;
  7. BIT_AND(expr)

    • 返回给定集合中所有位的按位与操作的结果。
    • 示例:SELECT BIT_AND(flags) FROM settings;
  8. BIT_OR(expr)

    • 返回给定集合中所有位的按位或操作的结果。
    • 示例:SELECT BIT_OR(flags) FROM settings;
  9. BIT_XOR(expr)

    • 返回给定集合中所有位的按位异或操作的结果。
    • 示例:SELECT BIT_XOR(flags) FROM settings;
  10. STDDEV_POP(expr)STDDEV_SAMP(expr)

    • 分别计算总体标准差(STDDEV_POP)和样本标准差(STDDEV_SAMP)。
    • 示例:SELECT STDDEV_POP(score) FROM students;
  11. VAR_POP(expr)VAR_SAMP(expr)

    • 分别计算总体方差(VAR_POP)和样本方差(VAR_SAMP)。
    • 示例:SELECT VAR_SAMP(score) FROM students;

这些聚合函数通常与 GROUP BY 语句一起使用,以便对数据进行分组并为每个组计算汇总信息。通过组合使用这些函数,你可以执行复杂的数据分析任务,从简单的统计到更高级的数据挖掘。

5.控制流函数

MySQL 提供了一些控制流函数,这些函数允许你在 SQL 查询中实现条件逻辑。这使得你可以根据不同的条件执行不同的操作或返回不同的结果。以下是 MySQL 中常用的控制流函数及其简要说明:

  1. IF(expr, true_val, false_val)

    • 如果 expr 为真(非零且非NULL),则返回 true_val;否则返回 false_val
    • 示例:SELECT IF(1 > 2, 'Yes', 'No');
  2. CASE 表达式

    • CASE 可以有两种形式:

      • 简单 CASE:将表达式与多个值进行比较。

        CASE exprWHEN val1 THEN result1[WHEN val2 THEN result2 ...][ELSE else_result]
        END
        
      • 搜索 CASE:检查多个条件。

        CASEWHEN condition1 THEN result1[WHEN condition2 THEN result2 ...][ELSE else_result]
        END
        
    • 示例:SELECT CASE WHEN age < 18 THEN 'Minor' ELSE 'Adult' END AS status FROM persons;

  3. IFNULL(expr1, expr2)

    • 如果 expr1 不是 NULL,则返回 expr1;否则返回 expr2
    • 示例:SELECT IFNULL(NULL, 'Default Value');
  4. NULLIF(expr1, expr2)

    • 如果 expr1 = expr2,则返回 NULL;否则返回 expr1
    • 这个函数对于防止除以0错误等情况非常有用。
    • 示例:SELECT NULLIF(1, 1); 返回 NULL。
  5. COALESCE(expr1, expr2, ..., exprN)

    • 返回第一个非 NULL 的表达式的值。如果所有参数都是 NULL,则返回 NULL。
    • 示例:SELECT COALESCE(NULL, NULL, 'Third Value', 'Fourth Value');
  6. ELT(N, str1, str2, ...)

    • 返回给定索引 N 对应的字符串。如果 N 是 1,则返回 str1,依此类推。
    • 示例:SELECT ELT(2, 'apple', 'banana', 'orange'); 返回 ‘banana’。
  7. FIELD(str, str1, str2, ...)

    • 返回 str 在列表中的位置。如果没有找到,则返回 0。
    • 示例:SELECT FIELD('banana', 'apple', 'banana', 'orange'); 返回 2。
  8. GREATEST(val1, val2, ...)LEAST(val1, val2, ...)

    • 分别返回输入值中的最大值和最小值。
    • 示例:SELECT GREATEST(1, 2, 3); 返回 3。
    • 示例:SELECT LEAST(1, 2, 3); 返回 1。

这些控制流函数可以在查询中用来创建更复杂的逻辑判断,并且可以根据数据的具体情况来决定返回什么样的结果。它们经常用于 SELECT 查询、触发器和存储过程中,以便于处理复杂的数据逻辑和业务规则。

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

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

相关文章

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

单链表---合并两个链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表&#xff0c; 将两个链表中最小的结点依次尾插到…

SD控制器设计:从协议到RTL实战,精通数字IP设计

SD 卡作为一种便捷的存储设备&#xff0c;广泛应用于各类电子设备中。而在这背后&#xff0c;SD 控制器的设计起着至关重要的作用。SD控制器设计是数字集成电路&#xff08;IC&#xff09;设计领域中的一项关键技能&#xff0c;特别是在系统芯片&#xff08;SoC&#xff09;设计…

windows系统的环境变量(系统变量)不能编辑可能是这个原因

有些电脑从开始菜单那搜索“环境变量”后是没法编辑系统变量的&#xff0c;只能从设置里面进”环境变量“来进行编辑。 可以观察到系统环境变量即便是点击到了,但还是无法进行编辑

开发手札:Win+Mac下工程多开联调

最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本&#xff0c;进入测试流程了。为了方便自测&#xff0c;需要用unity将一个工程打开多次&#xff0c;分别是Win/IOS/Android版本&#xff0c;进行多角色联调。 在Win开发机上&#xff0c;以Windows版本为主版…

OCCT 的OCAF之遍历TDF_Label树

0.概述 如果想从文档 (TDocStd_Document) 中获取单独的TopoDS_Shape和对应的颜色信息等&#xff0c;那就需要遍历TDF_Label 树中储存的信息&#xff0c;如果不想麻烦的去遍历&#xff0c;可以直接使用XCAFPrs_AISObject来直接渲染TDF_Label &#xff0c;XCAFPrs_AISObject内部…

【全网最新】若依管理系统基于SpringBoot的前后端分离版本开发环境配置

目录 提前准备&#xff1a; 下载源代码 设置依赖 设置后台连接信息 运行后台 运行前端 安装npm依赖 启动前端 登录网页客户端 提前准备&#xff1a; 1、安装mysql 5以上就可以。 2、安装redis. 3、安装npm npm下载地址&#xff1a;https://nodejs.org/dist/v22.12…

vscode CMakeLists中对opencv eigen的引用方法

CMakeLists.txt 项目模式&#xff08;只有一个main函数入口&#xff09; cmake_minimum_required(VERSION 3.5)project(vsin01 VERSION 0.1 LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)set(OpenCV_DIR G:/MinGW_Opencv/opencv4.10/opencv…

前端开发攻略-跨页面通信方法

前端实现跨页面通信的方法多种多样&#xff0c;以下是一些常见的方法&#xff1a; Broadcast Channel&#xff1a; 这是一个浏览器提供的API&#xff0c;允许不同页面之间通过广播的方式进行消息传递。可以创建一个频道&#xff0c;并在不同的页面之间发送和接收消息。API使用简…

Leetcode day1.两数相加(2) 2.整数反转(7)

注意点&#xff1a;1.链表会出现其中一个已经为空&#xff0c;另一个缺还是有数据 2.相加时会出现进位操作 解法一、 利用队列的性质&#xff08;基础不好 第一时间想到的&#xff09; 很像队列的性质&#xff0c;先进先出&#xff0c;逐步计算。但是最后要换成链表样式。 …

【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例

文章目录 一、实验目的二、实验要求三、实验原理&#xff08;一&#xff09;Kafka简介&#xff08;二&#xff09;Kafka使用场景 四、实验环境五、实验内容和步骤&#xff08;一&#xff09;配置各服务器之间的免密登录&#xff08;二&#xff09;安装ZooKeeper集群&#xff08…

AndroidAutoSize实战教程:今日头条屏幕适配方案详解

如何在项目中结合 AndroidAutoSize 来进行今日头条屏幕适配&#xff0c;我会具体讲解如何用 AndroidAutoSize 实现屏幕适配&#xff0c;并结合 Kotlin 代码举例分析。 通过 AndroidAutoSize 库来实现屏幕适配&#xff0c;确保在不同的屏幕尺寸、分辨率、密度下&#xff0c;应用…

【贪心算法】贪心算法五

贪心算法五 1.跳跃游戏 II2.跳跃游戏3.加油站3.单调递增的数字 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.跳跃游戏 II 题目链接&…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

《业务流程--穿越从概念到实践的丛林》读后感一:什么是业务流程

2、分类法 分类法并不强调流程的横向分段和纵向分段的结构化关系&#xff0c;只是提供了一个流程分类分级的层级结构&#xff0c;让用户可以将一个个离散的流程装进这个分类框架里&#xff0c; 这种思路的代表是APQC PCF. APQC分类方法的第一层级就是企业价值链模型&#xff0c…

4.5 TCP 报文段的首部格式

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 TCP 报文段的基本结构2 固定部分2.1 源端口与目的端口2.2 序号2.3 确认号2.4 数据偏移2.5 保留字段2.6 控制位2.7 窗口2.8 检验和2.9 紧急指针 3 可变部分3.1 选项3.2 填…

MySQL数据集成到广东省追溯平台的销售信息同步方案

销售信息同步--外购上报流程2&#xff1a;MySQL数据集成到广东省特殊食品电子追溯平台 在现代数据驱动的业务环境中&#xff0c;确保销售信息的准确性和及时性至关重要。本文将分享一个具体的技术案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将MySQL中的销售信…

Nginx配置https(Ubuntu、Debian、Linux、麒麟)

Ubuntu操作系统&#xff0c;Debian系统底层是Ubuntu&#xff0c;差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…

【优选算法 二分查找】二分查找入门详解:二分查找 & 在排序数组中查找元素的第一个和最后一个位置

二分查找 题目描述 题目解析 暴力解法 我们可以从左往右遍历一次数组&#xff0c;如果存在 target 则返回数组的下标&#xff0c;否则返回 -1&#xff1b; 时间复杂度 O(N)&#xff0c;因为没有利用数组有序的特点&#xff0c;每次比较只能舍弃一个要比较的数&…

Linux镜像文件制作

本文介绍Linux镜像文件制作。 嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作&#xff0c;本文结合一个实例简要介绍Linux镜像文件的制作。 1.确定磁盘空间布局 在制作镜像文件之前应提前确定好磁盘空间布局&#xff0c;也就是地址空间划分&#xff0c;如这里的磁盘…