MySQL内置函数

news2024/11/15 17:41:20

MySQL内置函数

      • 1 .日期函数
      • 2.字符串函数
      • 3.数学函数
      • 4.其它函数
      • 5.综合练习题

1 .日期函数

在这里插入图片描述

current_date()   当前日期
  • 获得年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2022-12-10     |
+----------------+
1 row in set (0.00 sec)

current_time()   当前时间
  • 获得时分秒:
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 15:46:05       |
+----------------+
1 row in set (0.00 sec)

current_timestamp()  当前时间戳
  • 获得时间戳:
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2022-12-10 15:46:46 |
+---------------------+
1 row in set (0.00 sec)

date(datetime)   返回datetime参数的日期部分

date_add(date,interval d_value_type)  在date中添加日期或时间

interval 后的数值单位可以是:year minute second day

mysql> select date_add('2022-10-28', interval 10 day);
+-----------------------------------------+
| date_add('2022-10-28', interval 10 day) |
+-----------------------------------------+
| 2022-11-07                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add('2022-10-28', interval 10 minute);
+--------------------------------------------+
| date_add('2022-10-28', interval 10 minute) |
+--------------------------------------------+
| 2022-10-28 00:10:00                        |
+--------------------------------------------+
1 row in set (0.00 sec)

date_sub(date,interval d_value_type)  在date中减去日期或时间

interval 后的数值单位可以是:year minute second day

mysql> select date_sub('2022-10-28', interval 10 day);
+-----------------------------------------+
| date_sub('2022-10-28', interval 10 day) |
+-----------------------------------------+
| 2022-10-18                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> select date_sub('2022-10-28', interval 10 minute);
+--------------------------------------------+
| date_sub('2022-10-28', interval 10 minute) |
+--------------------------------------------+
| 2022-10-27 23:50:00                        |
+--------------------------------------------+
1 row in set (0.00 sec)

datediff(date1,date2)  两个日期的差,单位是天
  • 计算两个日期之间相差多少天:
mysql> select datediff('2023-12-24', '2022-12-10');
+--------------------------------------+
| datediff('2023-12-24', '2022-12-10') |
+--------------------------------------+
|                                  379 |
+--------------------------------------+
1 row in set (0.00 sec)

ps:24考研倒计时379天


now()  当前日期时间
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2022-12-10 16:02:03 |
+---------------------+
1 row in set (0.00 sec)

案例:

  • 创建一个留言表
mysql> create table msg(
    -> id int primary key auto_increment,
    -> comtent varchar(30) not null,
    -> sendtime datetime
    -> );
Query OK, 0 rows affected (0.03 sec)
  • 插入数据
mysql> insert into msg(comtent,sendtime) values ('hello',now());
Query OK, 1 row affected (0.01 sec)

mysql> insert into msg(comtent,sendtime) values ('hi',now());
Query OK, 1 row affected (0.00 sec)

mysql> select * from msg;
+----+---------+---------------------+
| id | comtent | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2022-12-10 16:08:11 |
|  2 | hi      | 2022-12-10 16:08:25 |
+----+---------+---------------------+
2 rows in set (0.00 sec)

  • 显示所有留言信息,发布日期只显示日期,不用显示时间
mysql> select comtent,date(sendtime) from msg;
+---------+----------------+
| comtent | date(sendtime) |
+---------+----------------+
| hello   | 2022-12-10     |
| hi      | 2022-12-10     |
+---------+----------------+
2 rows in set (0.00 sec)
  • 请查询在2分钟内发布的帖子
mysql> select * from msg where date_add(sendtime, interval 2 minute) > now();
Empty set (0.01 sec)

mysql> select * from msg where date_add(sendtime, interval 5 minute) > now();
+----+---------+---------------------+
| id | comtent | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2022-12-10 16:08:11 |
|  2 | hi      | 2022-12-10 16:08:25 |
+----+---------+---------------------+
2 rows in set (0.00 sec)

可以看到,俩分钟内没有发布的贴子,五分钟内有两条。

2.字符串函数

在这里插入图片描述

案例:

  • chaeset(str)
mysql> select charset('张三');
+-------------------+
| charset('张三')   |
+-------------------+
| utf8              |
+-------------------+
1 row in set (0.00 sec)

mysql> select charset(111);
+--------------+
| charset(111) |
+--------------+
| binary       |
+--------------+
1 row in set (0.00 sec)
  • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分”
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |      67 |   98 |      56 |
|  2 | 孙悟空    |      87 |   80 |      77 |
|  3 | 猪悟能    |      88 |   98 |      90 |
|  4 | 曹孟德    |      70 |   90 |      67 |
|  5 | 刘玄德    |      55 |  115 |      45 |
|  6 | 孙权      |      70 |   73 |      78 |
|  7 | 宋公明    |      75 |   95 |      30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)

mysql> select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from exam_result;
+----------------------------------------------+
| 分数                                         |
+----------------------------------------------+
| 唐三藏的语文是67分,数学是98分               |
| 孙悟空的语文是87分,数学是80分               |
| 猪悟能的语文是88分,数学是98分               |
| 曹孟德的语文是70分,数学是90分               |
| 刘玄德的语文是55分,数学是115分              |
| 孙权的语文是70分,数学是73分                 |
| 宋公明的语文是75分,数学是95分               |
+----------------------------------------------+
7 rows in set (0.00 sec)
  • 求exam_result表中人物姓名占用的字节数
mysql> select name,length(name) from exam_result;
+-----------+--------------+
| name      | length(name) |
+-----------+--------------+
| 唐三藏    |            9 |
| 孙悟空    |            9 |
| 猪悟能    |            9 |
| 曹孟德    |            9 |
| 刘玄德    |            9 |
| 孙权      |            6 |
| 宋公明    |            9 |
+-----------+--------------+
7 rows in set (0.00 sec)

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。

比如:字母,数组算作一个字节,中文表示多个字节数(与字符集编码有关)

中文汉字一个字符占3个字节,因此例如 '唐三藏’字节数为9.

  • 将exam_result表中数学成绩为115的成绩替换成 ’牛逼‘
mysql> select name,math,replace(math,115,'牛逼') from exam_result;
+-----------+------+----------------------------+
| name      | math | replace(math,115,'牛逼')   |
+-----------+------+----------------------------+
| 唐三藏    |   98 | 98                         |
| 孙悟空    |   80 | 80                         |
| 猪悟能    |   98 | 98                         |
| 曹孟德    |   90 | 90                         |
| 刘玄德    |  115 | 牛逼                       |
| 孙权      |   73 | 73                         |
| 宋公明    |   95 | 95                         |
+-----------+------+----------------------------+
7 rows in set (0.00 sec)
  • 截取exam_result表中name字段的第二个到第三个字符
mysql> select name,substring(name,2,3) from exam_result;
+-----------+---------------------+
| name      | substring(name,2,3) |
+-----------+---------------------+
| 唐三藏    | 三藏                |
| 孙悟空    | 悟空                |
| 猪悟能    | 悟能                |
| 曹孟德    | 孟德                |
| 刘玄德    | 玄德                |
| 孙权      | 权                  |
| 宋公明    | 公明                |
+-----------+---------------------+
7 rows in set (0.00 sec)
  • 大小写转换
mysql> select ucase('1234Asd');
+------------------+
| ucase('1234Asd') |
+------------------+
| 1234ASD          |
+------------------+
1 row in set (0.00 sec)

mysql> select lcase('1234Asd');
+------------------+
| lcase('1234Asd') |
+------------------+
| 1234asd          |
+------------------+
1 row in set (0.00 sec)
  • 查看字符@在字符串123asd456zxc@qq.com中首次出现的位置
mysql> select instr('123asd456zxc@qq.com','@');
+----------------------------------+
| instr('123asd456zxc@qq.com','@') |
+----------------------------------+
|                               13 |
+----------------------------------+
1 row in set (0.00 sec)
  • 去除左右空格
mysql> select '    aaa   ' as res;
+------------+
| res        |
+------------+
|     aaa    |
+------------+
1 row in set (0.00 sec)

mysql> select ltrim('    aaa   ') as res;
+--------+
| res    |
+--------+
| aaa    |
+--------+
1 row in set (0.00 sec)

mysql> select rtrim('    aaa   ') as res;
+---------+
| res     |
+---------+
|     aaa |
+---------+
1 row in set (0.00 sec)

mysql> select trim('    aaa   ') as res;
+------+
| res  |
+------+
| aaa  |
+------+
1 row in set (0.00 sec)

3.数学函数

在这里插入图片描述

  • 绝对值
mysql> select abs(-250.55);
+--------------+
| abs(-250.55) |
+--------------+
|       250.55 |
+--------------+
1 row in set (0.00 sec)
  • 向上取整
 mysql> select ceiling(23.04);
 +----------------+
 | ceiling(23.04) |
 +----------------+
 |             24 |
 +----------------+
 1 row in set (0.00 sec)
 
 mysql> select ceiling(-23.04);
 +-----------------+
 | ceiling(-23.04) |
 +-----------------+
 |             -23 |
 +-----------------+
 1 row in set (0.00 sec)
  • 向下取整
mysql> select floor(23.7);
+-------------+
| floor(23.7) |
+-------------+
|          23 |
+-------------+
1 row in set (0.01 sec)

mysql> select floor(-23.7);
+--------------+
| floor(-23.7) |
+--------------+
|          -24 |
+--------------+
1 row in set (0.00 sec)
  • 保留2位小数位数(小数四舍五入)
mysql> select format(12.3456, 2);
+--------------------+
| format(12.3456, 2) |
+--------------------+
| 12.35              |
+--------------------+
1 row in set (0.00 sec)
  • 产生随机数
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.8591073694258066 |
+--------------------+
1 row in set (0.00 sec)

mysql> select rand()*10;
+-------------------+
| rand()*10         |
+-------------------+
| 8.073119305142312 |
+-------------------+
1 row in set (0.00 sec)

mysql> select format(rand()*10,0);
+---------------------+
| format(rand()*10,0) |
+---------------------+
| 5                   |
+---------------------+
1 row in set (0.01 sec)
  • 将255十进制转换为二进制
mysql> select conv(255,10,2);
+----------------+
| conv(255,10,2) |
+----------------+
| 11111111       |
+----------------+
1 row in set (0.00 sec)

4.其它函数

  • user() 查询当前用户
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5('hello');
+----------------------------------+
| md5('hello')                     |
+----------------------------------+
| 5d41402abc4b2a76b9719d911017c592 |
+----------------------------------+
1 row in set (0.00 sec)
  1. md5简介
    md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。

  2. md5原理
    md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的md5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。

  3. md5的用途
    密码的加密存储、数字签名、文件完整性验证、文件上传…

md5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。

  • database()显示当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| test2      |
+------------+
1 row in set (0.00 sec)
  • ifnull(val1, val2)

如果val1为null,返回val2,否则返回val1的值

mysql> select ifnull(111,222);
+-----------------+
| ifnull(111,222) |
+-----------------+
|             111 |
+-----------------+
1 row in set (0.00 sec)

mysql> select ifnull(null,222);
+------------------+
| ifnull(null,222) |
+------------------+
|              222 |
+------------------+
1 row in set (0.00 sec)

mysql> select ifnull(null,null);
+-------------------+
| ifnull(null,null) |
+-------------------+
|              NULL |
+-------------------+
1 row in set (0.00 sec)

5.综合练习题

查找字符串中逗号出现的次数

描述:

现有strings表如下:

  • id指序列号;
  • string列中存放的是字符串,且字符串中仅包含数字、字母和逗号类型的字符。
idstring
110,A,B,C,D
2A,B,C,D,E,F
3A,11,B,C,D,E,G

请你统计每个字符串中逗号出现的次数cnt。

以上例子的输出结果如下:

idcnt
14
25
36

思路:

统计字符串中逗号出现的次数,我们可以将字符串里的逗号用空串替换,然后用原始字符串长度减去替换后字符串长度,即为逗号数量

解答:

select id,length(string)-length(replace(string,',','')) as cnt from strings;

the end~

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

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

相关文章

C语言基础—程序创建过程和编译过程

C程序的创建过程 4️⃣ C 程序的创建过程有4️⃣个基本步骤: 编写、编译、链接和运行。 编写:用文本编辑器或IDE编写源代码。源代码包含程序所需的所有命令和语句。编译:使用编译器对源代码进行编译,生成可执行文件。 - .o 文件…

gyp ERR find Python 解决方案

命令行报错如下 E:\vue-admin\node_modules\fibers>if not defined npm_config_node_gyp (node "D:\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild --releas e ) else (node "…

Java项目:SSM物流快递管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 仓库管理员角色包含以下功能: 仓库管理员操作,入库操作,员工查看,揽收快件,新建员工等功能。 快递员角色包含以下功能: …

Nacos服务注册解析

服务注册就是在微服务启动时自动注册进nacos注册中心,核心逻辑就是在启动时调用nacos-server端的http接口:/nacos/v1/ns/instance,具体参考nacos官方文档。 我们打开nacos源码结构查看 上图为Nacos2.2的源码结构.其中比较核心的就是这几个包&#xff1…

墨者学院 PHP代码分析溯源(第4题) 详解

今天继续给大家介绍CTF通关writeup,本文主要内容是墨者学院 PHP代码分析溯源(第4题)。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严…

尝试使用CubeMX做stm32开发之十四:FatFs的基础知识

一、文件系统概念 文件系统:在存储介质中建立一种组织架构,以更好地储存和管理数据 文件系统一般包含:操作系统引导区、目录、文件等 文件系统中数据以文件的形式存储 文件系统中数据的存取需要遵循特定的格式 与直接操作存储介质相比&a…

[附源码]计算机毕业设计基于SpringBt的演唱会购票系统论文2022Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C++ MySQL Error 1366 incorrect string value引发的认识

C MySQL Error 1366 incorrect string value引发的认识 前言 在使用MySQL C API编写程序时,由于用到了中文,导致出现了MySQL error 1366 incorrect string value 问题,但令我同样不解的是我用同样的语句在cmd下可以正常执行。(M…

【算法】动态规划 ⑤ ( LeetCode 63.不同路径 II | 问题分析 | 动态规划算法设计 | 代码示例 )

文章目录一、问题分析二、动态规划算法设计1、动态规划状态 State2、动态规划初始化 Initialize3、动态规划方程 Function4、动态规划答案 Answer三、代码示例LeetCode 63. 不同路径 II : https://leetcode.cn/problems/unique-paths-ii/ 一个机器人位于一个 m x n 网格的左上…

java初步学习 String(基于小李的课进行自学,初学者)12

初步学习 String 基本概念 String类型即为字符串类型,即“103”,“abc”,"小陈"等字符类型,在工作中可用于加密,替换,截取,查找等工作 不过这种名词显然不能联想到工作的实际样子 例:…

[附源码]Python计算机毕业设计SSM基于框架的旅游订票系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

IIS 之 添加MIME扩展类型及HTTP错误403

IIS 之 添加MIME扩展类型及HTTP错误403 我是艾西今天跟大家分享下IIS添加MIME及HTTP报错403 经常用IIS作为下载服务器的时候有时传上去的文件比如 example.mp4 文件名上传后,但是用http打开的时候确显示为 404 文件不存在。其实是IIS对文件的一种保护,…

基于java+springboot+mybatis+vue+mysql的校园志愿者管理系统

项目介绍 本校园志愿者管理系统以springboot作为框架,前端vue技术,b/s模式以及mysql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知…

游戏开发49课 性能优化7

4. 渲染优化 渲染优化的目的是减少Draw Calls,减少渲染状态切换开销,降低显存占用,降低带宽和GPU负担。在讲解渲染优化之前,先了解渲染性能消耗点。 Draw Call数量 Draw Call有些引擎也称为SetPass Call。一个Draw Call就是游戏调…

叫ChatGPT用html+css+js写一个圣诞节代码,看看什么样子?

最近ChatGPT这么火,那就让他给我写点代码吧。 如何注册一个账号,参考:注册ChatGPT详细指南 注册不了的小伙伴们,咱们评论区见,问一个最想问的问题,看到就给你回复! 我已经注册好了,…

代码随想录算法训练营第五十九天|503.下一个更大元素II、42. 接雨水

LeetCode 503.下一个更大元素II 链接:503.下一个更大元素II 思路: 本题其实和739. 每日温度更像一点,因为本题只有一个数组,而在下一个更大元素I中有两个,因此必须要一个哈希表来在另一个数组中查找相对应的数字。除…

yolov5检测结果不显示

安装完yolov5后,运行各种正常,后台也能显示识别信息,像这样。 而且在runs/detect/exp4文件夹中也会有正确的标识 但是我也想能在前台实时显示,像这样。 折腾了一个晚上也没有搞的定,甚至一度以为,是因为CPU…

SSM甜品店系统计算机专业毕业论文java毕业设计开题报告

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之SSM甜品店系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygogogo.com/i…

【MindStudio训练营第一期】【昇腾AI训练营新手班学习笔记】可视化流程编排

准备 配置环境理解Python代码部分mxVision用户指南一份 步骤 案例的流程图: 图像输入和图像预处理 图像输入(appsrc插件) 通过python open和read到的图片数据,用SendData方法传入stream中,appsrc将数据发送给下游元…

《操作系统》期末考试卷3参考答案

《操作系统》期末考试卷(第3套) 参考答案与评分标准 一、单项选择题(共10题,每题2分,共20分) 题号 1 2 3 4 5 6 7 8 9 10 答案 D D C A C B A A B A 二、填空题(共8题,每空1分&…