【MySQL学习笔记】(七)内置函数
内置函数
- 日期函数
- 示例
- 案例-1
- 案例-2
- 字符串函数
- 示例
- 数学函数
- 其他函数
日期函数
示例
- 获得当前年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-09-03 |
+----------------+
1 row in set (0.00 sec)
- 获得当前时分秒
mysql> select current_time;
+--------------+
| current_time |
+--------------+
| 09:20:15 |
+--------------+
1 row in set (0.00 sec)
- 获得当前时间戳
mysql中该函数会自动将时间戳转化为年月日时分秒的格式
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-09-03 09:20:49 |
+---------------------+
1 row in set (0.00 sec)
- date(datetime),返回 datetime 参数中的日期部分(年月日部分)
mysql> select date(current_date());
+----------------------+
| date(current_date()) |
+----------------------+
| 2023-09-03 |
+----------------------+
1 row in set (0.00 sec)//虽然currnt_time()获得的只有时分秒时间,但该函数内部获得时间的时候是可以获得日期(年月日)的
mysql> select date(current_time());
+----------------------+
| date(current_time()) |
+----------------------+
| 2023-09-03 |
+----------------------+
1 row in set (0.00 sec)mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-09-03 |
+---------------------------+
1 row in set (0.00 sec)
- 在日期的基础上加上日期
//在 2023-9-3 的基础上加上 50 天
mysql> select date_add('2023-9-3',interval 50 day);
+--------------------------------------+
| date_add('2023-9-3',interval 50 day) |
+--------------------------------------+
| 2023-10-23 |
+--------------------------------------+
1 row in set (0.00 sec)
- 在日期的基础上减去日期
//在 2023-10-23 的基础上减去 50 天
mysql> select date_sub('2023-10-23',interval 50 day);
+----------------------------------------+
| date_sub('2023-10-23',interval 50 day) |
+----------------------------------------+
| 2023-09-03 |
+----------------------------------------+
1 row in set (0.00 sec)
- 计算两个日期相差多少天
mysql> select datediff('2023-9-3','2023-10-23');
+-----------------------------------+
| datediff('2023-9-3','2023-10-23') |
+-----------------------------------+
| -50 |
+-----------------------------------+
1 row in set (0.00 sec)
案例-1
- 创建一张表,记录生日
mysql> create table tmp (id int primary key auto_increment,birthday date not null);
Query OK, 0 rows affected (0.01 sec)mysql> desc tmp;
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| birthday | date | NO | | NULL | |
+----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
- 添加当前日期
mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.00 sec)mysql> select* from tmp;
+----+------------+
| id | birthday |
+----+------------+
| 1 | 2023-09-03 |
+----+------------+
1 row in set (0.00 sec)
案例-2
- 创建一个留言表
mysql> create table msg(id int primary key auto_increment,content varchar(30) not null,sendtime datetime);
Query OK, 0 rows affected (0.01 sec)mysql> desc msg;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| content | varchar(30) | NO | | NULL | |
| sendtime | datetime | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
- 插入数据
mysql> insert into msg(content,sendtime) values('hello',now());
Query OK, 1 row affected (0.00 sec)mysql> insert into msg(content,sendtime) values('hi',now());
Query OK, 1 row affected (0.00 sec)mysql> select* from msg;
+----+---------+---------------------+
| id | content | sendtime |
+----+---------+---------------------+
| 1 | hello | 2023-09-03 09:48:45 |
| 2 | hi | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
- 显示所有留言信息,发布日期只显示到年月日,不用显示具体时间
mysql> select content ,date(sendtime) from msg;
+---------+----------------+
| content | date(sendtime) |
+---------+----------------+
| hello | 2023-09-03 |
| hi | 2023-09-03 |
+---------+----------------+
2 rows in set (0.00 sec)
- 查询在 10 分钟内发布的帖子
mysql> select* from msg where date_add(sendtime,interval 10 minute) > now();
+----+---------+---------------------+
| id | content | sendtime |
+----+---------+---------------------+
| 1 | hello | 2023-09-03 09:48:45 |
| 2 | hi | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
理解:------------------------------|-----------|-------------|------------------初始时间 now() 初始时间+10min
字符串函数
示例
- 获取表中的某一列的字符集
mysql> select charset(content) from msg;
+------------------+
| charset(content) |
+------------------+
| utf8 |
| utf8 |
+------------------+
2 rows in set (0.00 sec)
- 字符串连接
mysql> select concat('app','le');
+--------------------+
| concat('app','le') |
+--------------------+
| apple |
+--------------------+
1 row in set (0.00 sec)
- 某字符串中是否包含某子串,包含则返回出现的位置,未包含则返回 0
mysql> select instr('apple','ple');
+----------------------+
| instr('apple','ple') |
+----------------------+
| 3 |
+----------------------+
1 row in set (0.00 sec)mysql> select instr('apple','b');
+--------------------+
| instr('apple','b') |
+--------------------+
| 0 |
+--------------------+
1 row in set (0.00 sec)
- 转换成大写
mysql> select ucase('abcA');
+---------------+
| ucase('abcA') |
+---------------+
| ABCA |
+---------------+
1 row in set (0.00 sec)
- 转换成小写
mysql> select lcase('abcA');
+---------------+
| lcase('abcA') |
+---------------+
| abca |
+---------------+
1 row in set (0.00 sec)
- 从字符串的左边或者右边起取 length 个字符
mysql> select left('abcdef',2);
+------------------+
| left('abcdef',2) |
+------------------+
| ab |
+------------------+
1 row in set (0.00 sec)mysql> select right('abcdef',2);
+-------------------+
| right('abcdef',2) |
+-------------------+
| ef |
+-------------------+
1 row in set (0.00 sec)
- 获取字符串的长度
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)mysql> select length('你好');
+------------------+
| length('你好') |
+------------------+
| 6 |
+------------------+
1 row in set (0.00 sec)
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)
- 在字符串中用某子串替换掉其中的子串
//在 ‘hello world’ 中用 ‘jack’ 替换掉 ‘world’
mysql> select replace('hello world','world','jack');
+---------------------------------------+
| replace('hello world','world','jack') |
+---------------------------------------+
| hello jack |
+---------------------------------------+
1 row in set (0.00 sec)
- 逐字符比较字符串的大小
//第一个字符串小于第二个字符串返回 -1
mysql> select strcmp('abc','abd');
+---------------------+
| strcmp('abc','abd') |
+---------------------+
| -1 |
+---------------------+
1 row in set (0.00 sec)//相等返回 0
mysql> select strcmp('abc','abc');
+---------------------+
| strcmp('abc','abc') |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.00 sec)//大于返回 1
mysql> select strcmp('abd','abc');
+---------------------+
| strcmp('abd','abc') |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.00 sec)
- 从字符串的第 position 开始,取 length 个字符
//从第一个位置开始取三个字符
mysql> select substring('abcdefg','1',3);
+----------------------------+
| substring('abcdefg','1',3) |
+----------------------------+
| abc |
+----------------------------+
1 row in set (0.00 sec)
- 去除 前空格 / 后空格 / 前后空格
mysql> select ' hello ' as res;
+-------------+
| res |
+-------------+
| hello |
+-------------+
1 row in set (0.00 sec)mysql> select ltrim(' hello ') as res;//去除前空格
+----------+
| res |
+----------+
| hello |
+----------+
1 row in set (0.00 sec)mysql> select rtrim(' hello ') as res;//去除后空格
+----------+
| res |
+----------+
| hello |
+----------+
1 row in set (0.00 sec)mysql> select trim(' hello ') as res; //去除前后空格
+-------+
| res |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)
数学函数
- 绝对值
mysql> select abs(-100.5);
+-------------+
| abs(-100.5) |
+-------------+
| 100.5 |
+-------------+
1 row in set (0.00 sec)
- 向上取整
mysql> select ceiling(23.4);
+---------------+
| ceiling(23.4) |
+---------------+
| 24 |
+---------------+
1 row in set (0.00 sec)
- 向下取整
mysql> select floor(24.7);
+-------------+
| floor(24.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.2013088168588549 |
+--------------------+
1 row in set (0.00 sec)mysql> select rand();
+--------------------+
| rand() |
+--------------------+
| 0.2613807602425858 |
+--------------------+
1 row in set (0.00 sec)
其他函数
- user() 查询当前用户
- md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
- database()显示当前正在使用的数据库
- password()函数,MySQL数据库使用该函数对用户加密
- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
相关文章:

【MySQL学习笔记】(七)内置函数
内置函数 日期函数示例案例-1案例-2 字符串函数示例 数学函数其他函数 日期函数 示例 获得当前年月日 mysql> select current_date(); ---------------- | current_date() | ---------------- | 2023-09-03 | ---------------- 1 row in set (0.00 sec)获得当前时分秒…...

《Python魔法大冒险》004第一个魔法程序
在图书馆的一个安静的角落,魔法师和小鱼坐在一张巨大的桌子前。桌子上摆放着那台神秘的笔记本电脑。 魔法师: 小鱼,你已经学会了如何安装魔法解释器和代码编辑器。是时候开始编写你的第一个Python魔法程序了! 小鱼:(兴奋地两眼放光)我准备好了! 魔法师: 不用担心,…...
架构,平台,框架的区别和联系
1、解释说明 - 架构:在软件开发中,架构是指软件的整体设计和组织方式。它包括了软件的结构、组件和交互方式等方面的设计。架构定义了系统的高级结构和组织方式,以及各个组件之间的关系和交互方式。一个良好的架构可以提高软件的可维护性、可…...

Mac 安装php多版本,brew安装php8.0
因为需要我要在mac上装两个php版本,先前我已经装过php7.4,下面我们逐步安装php8.0 开始安装8.0: 直接运行安装 brew install php8.0 遇到问题怀疑是仓库太老了,更新一下homebrew ,重新安装 brew update 安装成功了,不过看了下版本好像不能正…...

【100天精通Python】Day53:Python 数据分析_NumPy数据操作和分析进阶
目录 1. 广播 2 文件输入和输出 3 随机数生成 4 线性代数操作 5 进阶操作 6 数据分析示例 1. 广播 广播是NumPy中的一种机制,用于在不同形状的数组之间执行元素级操作,使它们具有兼容的形状。广播允许你在不显式复制数据的情况下,对不同…...
druid连接不上doris有哪些可能原因
如果你在使用Druid连接池连接Doris时遇到问题,无法连接上数据库,可能有以下几个原因和解决方案: 网络配置问题:确保你的应用程序能够与Doris数据库所在的服务器进行通信。检查防火墙设置、网络配置以及Doris数据库的监听端口是否…...

双边滤波 Bilateral Filtering
本文是对图像去噪领域经典的双边滤波法的一个简要介绍与总结,论文链接如下: https://users.soe.ucsc.edu/~manduchi/Papers/ICCV98.pdf 1.前言引入 对一副原始灰度图像,我们将它建模为一张二维矩阵u,每个元素称为一个像素pixel&am…...

PXE批量装机
目录 前言 一、交互式 (一)、搭建环境 (二)、配置dhcp服务 (三)、FTP服务 (四)、配置TFTP服务 (五)、准备pxelinx.0文件、引导文件、内核文件 &#…...

Linux--VMware的安装和Centos
一、VMware和Linux的关系 二、VMware的安装 VM_ware桌面虚拟机 最新中文版 软件下载 (weizhen66.cn) VMware-Workstation-Lite-16.2.2-19200509-精简安装注册版.7z - 蓝奏云 如果安装不成功,则设置BIOS 三、在VMware中加入Centos 下载地址: CentOS-…...

dji uav建图导航系列()ROS中创建dji_sdk节点包(一)项目结构
文章目录 1、整体项目结构1.1、 目录launch1.2、文件CMakeLists.txt1.3、文件package.xml1.4、目录include1.4、目录srv在ROS框架下创建一个无人机的节点dji_sdk,实现必需的订阅(控制指令)、发布(无人机里程计)、服务(无人机起飞降落、控制权得很)功能,就能实现一个类似…...

基于x86_64 ubuntu22.04的framebuffer编程
文章目录 前言一、framebuffer简介二、framebuffer接口1.framebuffer设备描述信息2.framebuffer访问接口3.查询/设置可更改信息 三、使用步骤 前言 前段时间由于笔记本没有保管好,LCD显示屏压碎了。于是,将笔记本电脑拆开查看LCD型号。在淘宝上下单买了…...
解密回文--栈
“ xyzyx ”是一个回文字符串,所谓回文字符 串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“ aha ”和“ ahaha ”均是回 文,但“ ahah ”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。 首先我们需…...

Mysql主从服务安装配置
1.下载地址 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 2.安装配置 1.下载解压后,拷贝一份作为slave的安装目录 3.配置my.ini 由于下载mysql8版本,解压后,没有相关的my…...
双向BFS
1034 Number Game 分数 35 作者 陈越 单位 浙江大学 A number game is to start from a given number A, and to reach the destination number B by a sequence of operations. For the current number X, there are 3 types of operations: XX1 XX−1 XXN Your job is to f…...

数据艺术:精通数据可视化的关键步骤
数据可视化是将复杂数据转化为易于理解的图表和图形的过程,帮助我们发现趋势、关联和模式。同时数据可视化也是数字孪生的基础,本文小编带大家用最简单的话语为大家讲解怎么制作一个数据可视化大屏,接下来跟随小编的思路走起来~ 1.数据收集和…...
MySQL 是如何实现事务的四大特性的?
分析&回答 如果你不知道事务更不知道四大特性请先看看:说说什么是事务 原子性 语句要么都执行,要么都不执行,是事务最核心的特性,事务本身来说就是以原子性来定义的,实现主要是基于undo log undo logÿ…...

python实现zscore归一化和minmax标准化
zscore归一化: minmax from sklearn import preprocessing from sklearn.preprocessing import StandardScaler import numpy as np# 数据 x np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]]) print(----------------minmaxscaler标准化-------------) # 调用minma…...
架构师成长之路Redis第三篇|Redis key过期清除策略
Eviction policies maxmemory 100mb 当我们设置的内存达到指定的内存量时,清除策略的配置方式决定了默认行为。Redis可以为可能导致使用更多内存的命令返回错误,也可以在每次添加新数据时清除一些旧数据以返回到指定的限制。 当达到最大内存限制时,Redis所遵循的确切行为是…...

C++智能指针之weak_ptr(保姆级教学)
目录 C智能指针之weak_ptr 概述 作用 本文涉及的所有程序 使用说明 weak_ptr的常规操作 lock(); use_count(); expired(); reset(); shared_ptr & weak_ptr 尺寸 智能指针结构框架 常见使用问题 shared_ptr多次引用同一数据,会导致两次释放同一内…...
ElementUI浅尝辄止18:Avatar 头像
用图标、图片或者字符的形式展示用户或事物信息。 常用于管理系统或web网站的用户头像,在用户账户模块更换头像操作也能看到关于Avatar组件的应用。 1.如何使用? 通过 shape 和 size 设置头像的形状和大小。 <template><el-row class"de…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...

轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...