[MySQL初阶]MySQL(5)内置函数详解

news2025/3/7 5:54:17

标题:[MySQL初阶]MySQL(5)内置函数详解
@水墨不写bug

在这里插入图片描述

文章目录

  • 一、日期函数
    • 1. current_date()
    • 2. current_time()
    • 3. current_timestamp()
    • 4. date(datetime)
    • 5. date_add(date, interval expr unit)
    • 6. date_sub(date, interval expr unit)
    • 7. datediff(date1, date2)
    • 8. now()
    • 9.日期函数总结&&注意事项
  • 二、字符串函数
    • 1. charset(str)
    • 2. concat(string1, string2 [, ...])
    • 3. instr(string, substring)
    • 4. ucase(string)
    • 5. lcase(string)
    • 6. left(string, length)
    • 7. length(string)
    • 8. replace(str, search_str, replace_str)
    • 9. strcmp(string1, string2)
    • 10. substring(str, position [, length])
    • 11. ltrim(string)
    • 12.字符串函数注意事项
  • 三、数学函数
    • 1. `ABS(number)`
    • 2. `BIN(decimal_number)`
    • 3. `HEX(decimalNumber)`
    • 4. `CONV(number, from_base, to_base)`
    • 5. `CEILING(number)`
    • 6. `FLOOR(number)`
    • 7. `FORMAT(number, decimal_places)`
    • 8. `RAND()`
    • 9. `MOD(number, denominator)`
    • 10.数学函数总结与注意事项


一、日期函数

在这里插入图片描述接下来我将会按照表中罗列的函数来依次讲解MySQL内置函数。

1. current_date()

  • 描述:返回当前系统日期(不包含时间)。
  • 语法CURRENT_DATE()CURRENT_DATE
  • 返回值:格式为 YYYY-MM-DD
  • 示例
    SELECT current_date()或者current_date; -- 返回 '2025-03-05'
    

2. current_time()

  • 描述:返回当前系统时间(不包含日期)。
  • 语法CURRENT_TIME()CURRENT_TIME
  • 返回值:格式为 HH:MM:SS
  • 示例
    SELECT current_time(); -- 返回 '14:30:45'
    

3. current_timestamp()

  • 描述:返回当前系统的日期和时间(即时间戳)。
  • 语法CURRENT_TIMESTAMP()CURRENT_TIMESTAMP
  • 返回值:格式为 YYYY-MM-DD HH:MM:SS
  • 示例
    SELECT current_timestamp(); -- 返回 '2025-03-05 14:30:50'
    

4. date(datetime)

  • 描述:从日期时间值中提取日期部分。
  • 参数datetime(日期时间类型的值)。
  • 返回值:格式为 YYYY-MM-DD
  • 示例
    SELECT date('2023-10-05 14:30:45'); -- 返回 '2023-10-05'
    

5. date_add(date, interval expr unit)

  • 描述:在指定日期/时间上添加一个时间间隔。
  • 参数
    • date:原始日期或时间。
    • expr:数值(正数表示增加,负数表示减少)。
    • unit:时间单位(支持 YEARDAYMINUTESECOND 等)。
  • 返回值:新的日期/时间。
  • 示例
    SELECT date_add('2025-10-05', interval 3 day); -- 返回 '2025-10-08'
    SELECT date_add('14:20:45', interval 10 minute); -- 返回 '14:30:45'
    

6. date_sub(date, interval expr unit)

  • 描述:在指定 日期/时间 上减去一个时间间隔。
  • 参数:与 date_add 类似。
  • 返回值:新的日期/时间。
  • 示例
    SELECT date_sub('2023-10-05', interval 1 year); -- 返回 '2022-10-05'
    SELECT date_sub('10:30:45', interval 30 second); -- 返回 '10:30:15'
    

7. datediff(date1, date2)

  • 描述:计算两个日期之间的天数差(date1 - date2),前 - 后。
  • 参数:两个日期值(格式需为 YYYY-MM-DD)。
  • 返回值:整数(正数或负数);前 > 后 为正前 < 后为负
  • 示例
    SELECT datediff('2023-10-10', '2023-10-05'); -- 返回 5
    SELECT datediff('2023-10-01', '2023-10-15'); -- 返回 -14
    

8. now()

  • 描述:返回当前系统的日期和时间(与 current_timestamp() 功能相同)。
  • 语法NOW()
  • 返回值:格式为 YYYY-MM-DD HH:MM:SS
  • 示例
    SELECT now(); -- 返回 '2023-10-05 14:30:45'
    

9.日期函数总结&&注意事项

  1. 单位兼容性date_adddate_subunit 需与 date 类型匹配。例如,对日期使用 MINUTE 会返回 NULL
  2. 时间格式:若参数格式错误(如非日期字符串),函数可能返回 NULL
  3. 函数别名
    • current_date() 等价于 curdate()
    • now() 等价于 current_timestamp()

二、字符串函数

在这里插入图片描述接下来我会对上述表格函数一一详解:


1. charset(str)

  • 描述:返回字符串 str 的字符集名称。
  • 参数str(字符串)。
  • 返回值:字符集名称(如 utf8mb4latin1)。
  • 示例
    SELECT charset('abc'); -- 返回当前连接的字符集,一般是 'utf8mb4'
    

2. concat(string1, string2 [, …])

  • 描述:将多个字符串连接成一个字符串。
  • 参数:至少两个字符串,支持多个参数。
  • 返回值:拼接后的字符串。若任一参数为 NULL,则返回 NULL
  • 示例
    SELECT concat('My', 'SQL'); -- 返回 'MySQL'
    SELECT concat('Hello', NULL, 'World'); -- 返回 NULL
    

特殊注意concat(string1, string2 [, ...])若任一参数为 NULL,则返回 NULL在这里插入图片描述


3. instr(string, substring)

  • 描述:返回子字符串 substringstring首次出现的位置,如果没有出现过,则返回0
  • 参数
    • string:主字符串。
    • substring:要查找的子字符串。
  • 返回值:位置索引(从 1 开始),未找到返回 0
  • 示例
    SELECT instr('foobarbaz', 'bar'); -- 返回 4
    SELECT instr('apple', 'z'); -- 返回 0
    

4. ucase(string)

  • 描述:将字符串转换为大写。
  • 别名upper()
  • 示例
    SELECT ucase('Hello'); -- 返回 'HELLO'
    

5. lcase(string)

  • 描述:将字符串转换为小写。
  • 别名lower()
  • 示例
    SELECT lcase('HELLO'); -- 返回 'hello'
    

6. left(string, length)

  • 描述:从字符串左侧截取指定长度的字符。
  • 参数
  • string:原始字符串。
  • length:截取长度(若为负数返回空字符串)。
  • 示例
SELECT left('Hello World', 5); -- 返回 'Hello'
  • 类似的还有right(string,length),在这里不再赘述。

7. length(string)

  • 描述:返回字符串的字节长度(与字符集相关)。
  • 注意:若需字符数,使用 char_length()
  • 示例
SELECT length('中国66'); -- 若字符集为 utf8mb4,返回 8(每个汉字占3字节,ASCII字符占一个字节)
SELECT char_length('中国66'); -- 返回 4(不论汉字,还是ASCII都算一个字符)
  • char_length()不论汉字,还是ASCII都算一个字符:

在这里插入图片描述


8. replace(str, search_str, replace_str)

  • 描述:将 str 中所有 search_str 替换为 replace_str
  • 参数
    • str:原始字符串。
    • search_str:被替换的子字符串。
    • replace_str:替换后的字符串。
  • 示例
    SELECT replace('banana', 'a', 'o'); -- 返回 'bonono'
    SELECT replace('banana',,'a','中国'); -- 见图片
    

在这里插入图片描述


9. strcmp(string1, string2)

  • 描述:逐字符比较两个字符串的大小(基于字符的ASCII值);类似于C的<string.h>内的strcmp函数.
  • 返回值
    • 0:两字符串相等。
    • 1string1 > string2
    • -1string1 < string2
  • 示例
    SELECT strcmp('apple', 'apple'); -- 返回 0
    SELECT strcmp('zoo', 'apple'); -- 返回 1
    

10. substring(str, position [, length])

  • 描述:从 position 开始截取 str 的字符,可指定截取长度。
  • 参数
    • position:起始位置(从 1 开始,负数表示从末尾倒数)。
    • length:可选,截取长度。
  • 示例
    SELECT substring('Hello World', 7); -- 返回 'World'
    SELECT substring('Hello', -3, 2); -- 返回 'lo'
    

11. ltrim(string)

  • 描述:去除字符串的前导空格(仅左侧)。
  • 注意:去除尾部空格使用 rtrim(),去除两端空格使用 trim(),这两个函数与本函数类似。
  • 示例
    SELECT ltrim('   Hello'); -- 返回 'Hello'
    

12.字符串函数注意事项

  1. 字符集影响length() 返回字节长度,char_length() 返回字符数。
  2. NULL处理concat() 中若存在 NULL,结果直接为 NULL
  3. 函数别名
    • ucase() 等价于 upper()
    • lcase() 等价于 lower()
  4. 索引范围substring()position 支持负数,表示从右向左计数。

三、数学函数

在这里插入图片描述


1. ABS(number)

  • 描述:返回数字的绝对值。
  • 参数number(整数或浮点数)。
  • 返回值:非负数,例如 ABS(-5) 返回 5ABS(-3.2) 返回 3.2
  • 示例
    SELECT ABS(-10); -- 输出 10
    

2. BIN(decimal_number)

  • 描述:将十进制整数转换为二进制字符串(MySQL特有)。

  • 参数decimal_number(十进制整数)。

  • 返回值:二进制字符串,例如 BIN(10) 返回 '1010'(无前缀)。

  • 注意:仅支持整数输入,若输入小数,则返回整数部分。仅支持正数,输入负数则返回其补码。

  • 示例

    SELECT BIN(5); -- 输出 '101'
    

    示例:仅支持整数输入,若输入小数,则返回整数部分。
    在这里插入图片描述示例:仅支持正数,输入负数则返回其补码。
    在这里插入图片描述在计算机中,负数以补码形式存储。-1的补码是其绝对值(1)的二进制取反后加1。例如,对于8位整数:

    1的二进制:00000001

    取反后:11111110

    加1得到补码:11111111(即全1)。


3. HEX(decimalNumber)

  • 描述:将十进制整数或字符串转换为十六进制字符串。
  • 参数decimalNumber(整数或字符串)。
  • 返回值:十六进制字符串,例如 HEX(255) 返回 'FF'HEX('abc') 返回 '616263'
  • 示例
    SELECT HEX(16); -- 输出 '10'
    

4. CONV(number, from_base, to_base)

  • 描述:将数字从一种进制转换为另一种进制。
  • 参数
    • number:原始进制的数字(字符串形式,例如 'A' 表示十六进制的10)。
    • from_base:原始进制(2-36)。
    • to_base:目标进制(2-36)。
  • 返回值:目标进制的字符串,例如 CONV('A', 16, 2) 返回 '1010'
  • 示例
    SELECT CONV(10, 10, 2); -- 输出 '1010'
    

5. CEILING(number)

  • 描述:向上取整,返回不小于输入值的最小整数。
  • 参数number(整数或浮点数)。
  • 返回值:整数,例如 CEILING(3.2) 返回 4CEILING(-2.3) 返回 -2
  • 别名CEIL()(MySQL中两者均可)。
  • 示例
    SELECT CEILING(4.1); -- 输出 5
    

6. FLOOR(number)

  • 描述:向下取整,返回不大于输入值的最大整数。
  • 参数number(整数或浮点数)。
  • 返回值:整数,例如 FLOOR(3.8) 返回 3FLOOR(-2.7) 返回 -3
  • 示例
    SELECT FLOOR(5.9); -- 输出 5
    

7. FORMAT(number, decimal_places)

  • 描述:格式化数字,保留指定小数位数并添加千位分隔符。
  • 参数
    • number:浮点数。
    • decimal_places:保留的小数位数(整数)。
  • 返回值:字符串,例如 FORMAT(1234.567, 2) 返回 '1,234.57'(四舍五入)。
  • 注意:与 ROUND() 不同,FORMAT 主要用于显示格式化,结果类型为字符串。
  • 示例
    SELECT FORMAT(123456.789, 1); -- 输出 '123,456.8'
    

8. RAND()

  • 描述:生成 [0.0, 1.0) 范围内的随机浮点数。
  • 参数:无。
  • 返回值:随机浮点数,例如 0.548813
  • 扩展用法:结合 RAND(N) 可指定种子值(N 为整数),生成可重复的随机序列。
  • 示例
    SELECT RAND(); -- 输出 0.123456(随机值)
    

9. MOD(number, denominator)

  • 描述:取模运算(求余数)。
  • 参数
    • number:被除数。
    • denominator:除数。
  • 返回值:余数,例如 MOD(10, 3) 返回 1MOD(-7, 3) 返回 -1
  • 注意:MySQL中余数符号与被除数一致。
  • 示例
    SELECT MOD(10, 3); -- 输出 1
    

10.数学函数总结与注意事项

  1. BIN()CONV()

    • BIN() 是 MySQL 特有函数,直接返回二进制字符串。
    • 若需其他进制转换,使用 CONV(number, from_base, to_base)
  2. FORMAT()

    • 主要用于格式化输出(添加千位分隔符),而非单纯保留小数位数。若需四舍五入,可结合 ROUND(number, decimal_places) 使用。
  3. HEX()

    • 支持整数和字符串输入,返回十六进制字符串。

完~
转载请注明出处

在这里插入图片描述

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

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

相关文章

EasyDSS视频推拉流/直播点播平台:Mysql数据库接口报错502处理方法

视频推拉流/视频直播点播EasyDSS互联网直播平台支持一站式的上传、转码、直播、回放、嵌入、分享功能&#xff0c;具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务&#xff0c;全面满足超低延迟、超高画质、超大并发访…

.NET 10首个预览版发布:重大改进与新特性概览!

前言 .NET 团队于2025年2月25日发布博文&#xff0c;宣布推出 .NET 10 首个预览版更新&#xff0c;重点改进.NET Runtime、SDK、Libraries 、C#、ASP.NET Core、Blazor 和.NET MAUI 等。 .NET 10介绍 .NET 10 是 .NET 9 的后继版本&#xff0c;将作为长期支持维护 &#xff…

【python】gunicorn配置

起因&#xff1a;因为cpu利用率低导致我去缩容&#xff0c;虽然缩容之后cpu利用率上升维持在60%左右&#xff0c;但是程序响应耗时增加了。 解释&#xff1a;因为cpu干这件活本身不累&#xff0c;但在干这件活的时候不能去干其他事情&#xff0c;导致并发的请求不能及时响应&am…

基于WebAssembly的云原生运行时:重新定义轻量化微服务架构

引言&#xff1a;颠覆性的运行时革命 Fastly边缘计算平台每天处理2000亿次Wasm请求&#xff0c;冷启动时间低于1ms。字节跳动采用Wasm实现广告算法热更新&#xff0c;发布耗时从分钟级降至秒级。CNCF 2024调研显示Wasm在边缘计算场景渗透率达42%&#xff0c;单实例内存开销仅为…

25年社工考试报名时间⏰附报名全流程✅

目前&#xff0c;湖北、重庆、云南、天津、山西、内蒙、四川、北京八地已发布考务通知。 1、湖北&#xff1a;3月11日9:00—3月26日20:00 2、重庆&#xff1a;3月13日9:00—3月24日17:00 3️⃣云南&#xff1a;3月10日09:00—3月20日17:00 4、天津&#xff1a;3月10日0:00至…

下载PyCharm 2024.3.4 (Community Edition)来开发测试python

1、下载PyCharm 2024.3.4 (Community Edition) 如果你使用的是联想电脑&#xff0c;可以直接在联想应用商店里下载&#xff0c;这样比较省事。 如果你使用的不是联想电脑&#xff0c;当然也可能是别的应用商店里下载。 也可以直接在官网下载&#xff1a; 下载 PyCharm&…

01-二分-查找(洛谷)

链接&#xff1a; P2249 【深基13.例1】查找 - 洛谷 题目 思路 没啥好说的&#xff0c;就是二分的模板要熟练掌握&#xff1b;详细参考代码随想录 本道题要注意的就是不能直接套模板&#xff0c;因为有重复元素&#xff0c;所以要单独处理一下边界。 代码 #include<bi…

linux发送邮件结合cron

Linux发送邮件结合cron定时任务 配置邮件发送&#xff08;以QQ邮箱为例&#xff0c;其他同理&#xff09; 一、获取qq邮箱授权码 登录qq邮箱 进行手机验证或者令牌啥的会获取到一个授权码 二、使用mailx发邮件 安装软件 yum -y install mailx编辑配置文件 vim /etc/mail…

C语言基础2

一、变量的作用域 局部变量的作用域是变量所在的局部范围&#xff0c;全局变量的作用域是整个工程。 int main() { { int a 10; printf("a %d\n", a); } printf("a %d\n", a); //报错位置 return 0; } 这里会发生报错&#xff1a; “a”: 未声明的…

09 HarmonyOS NEXT 仿uv-ui Tag组件开发教程系列(三)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 Tag组件实战应用与最佳实践1. 复杂场景应用1.1 标签筛选系统 2. 性能优化实践2.1 状态管理优化2.2 渲染性能优化 3. 实用功能扩展3.1 拖拽…

如何排查MySQL是否走索引

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

摄像头应用编程(三):多平面视频采集

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时&#xff0c;大致可以分为两类&#xff1a;Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…

【GoTeams】-2:项目基础搭建(下)

本文目录 1. 回顾2. Zap日志3. 配置4. 引入gprc梳理gRPC思路优雅关闭gRPC 1. 回顾 上篇文章我们进行了路由搭建&#xff0c;引入了redis&#xff0c;现在来看看对应的效果。 首先先把前端跑起来&#xff0c;然后点击注册获取验证码。 再看看控制台输出和redis是否已经有记录&…

02-双指针-A-B 数对

题目 链接&#xff1a;P1102 A-B 数对 - 洛谷 思路 问题场景想象 我们可以把这个问题想象成在一个排队的队伍里找符合特定身高差的人对。给定的数列里的每个数就好比队伍里每个人的身高&#xff0c;而差值 C 就是我们要找的身高差。我们的目标是找出队伍里所有身高差恰好是 …

2025年Cursor最新安装使用教程

Cursor安装教程 一、Cursor下载二、Cursor安装三、Cursor编辑器快捷键(1) 基础编辑快捷键(2) 导航快捷键(3) 其他常用快捷键 一、Cursor下载 Cursor官方网站&#xff08;https://www.cursor.com/ &#xff09; 根据自己电脑操作系统选择对应安装包 二、Cursor安装 下载完成后…

快速部署:在虚拟机上安装 CentOS 7 的详细步骤

CentOS是一个开源的基于Red Hat Enterprise Linux (RHEL) 的Linux发行版&#xff0c;它的主要目的是提供一个与RHEL相似的操作系统但不包含RHEL的商业支持和服务&#xff0c;完全免费。主要面向那些希望在企业环境中使用稳定、可靠的Linux系统但又不想支付RHEL许可证费用的用户…

【有啥问啥】深入浅出:大模型应用工具 Ollama 技术详解

深入浅出&#xff1a;大模型应用工具 Ollama 技术详解 引言 近年来&#xff0c;大型模型&#xff08;Large Models&#xff0c;LLMs&#xff09;技术突飞猛进&#xff0c;在自然语言处理、计算机视觉、语音识别等领域展现出强大的能力。然而&#xff0c;部署和运行这些庞大的…

利用opencv_python(pdf2image、poppler)将pdf每页转为图片

1、安装依赖pdf2image pip install pdf2image 运行.py报错&#xff0c;因为缺少了poppler支持。 2、安装pdf2image的依赖poppler 以上命令直接报错。 改为手工下载&#xff1a; github: Releases oschwartz10612/poppler-windows GitHub 百度网盘&#xff1a; 百度网盘…

大数据测试总结

总结测试要点&#xff1a; 参考产品文档&#xff0c;技术文档梳理以下内容 需求来源 业务方应用场景 数据源&#xff0c;数据格转&#xff0c;数据产出&#xff0c;数据呈现方式&#xff08;数据消亡史&#xff09;&#xff0c;数据量级&#xff08;增量&#xff0c;全量&am…

Redis面试常见问题——集群方案

Redis集群方案 在Redis中提供的集群方案总共有三种 主从复制 哨兵模式 分片集群 主从复制 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 主从数据同步原理 单节点Redis的并发能力是有…