MySQL函数
函数
MySQL函数与其存储过程类似,是一系列完成某种功能的SQL语句。函数一旦定义后,与过程一样是存储在MySQL的服务器上。调用函数就是一次性执行这些语句。所以函数可以降低语句重复。
MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,MySQL提供的常用函数包括聚合函数,字符串函数,日期时间函数,控制流函数等。
MySQL除了可以使用它提供的内置函数外,我们亦可以按照我们的要求来实现我们自己的功能,可是这个函数式系统不能提供的因为这中需求的不确定性。因此我们需要自己来解决这种需求。还好MySQL设计的扩展性给了我们这个机会,我们可以通过自定义函数的功能解决这个问题。
函数名称 | 作用 |
---|---|
abs | 绝对值 |
mod | 求余数 |
sqrt | 求二次方根 |
ceil和ceiling | 都是小于参数的最小整数,向上取整 |
floor | 向下取整,返回值转换为bigint |
rand | 生成0-1的之间的随机数 |
round | 四舍五入 |
sign | 返回带参数的符号 |
pow和 power | 都是所传代数的次方的结果值 |
sin | 求正弦值 |
asin | 求反正弦值, |
cos | 求余弦值 |
acos | 求反余弦值 |
tan | 求正切值 |
atan | 求反正切值 |
cot | 求余切值 |
abs:求绝对值
函数abs(x)返回x的绝对值,正数的绝对值时本身,负数的绝对值时相反数,0的绝对值是0
select abs(5),abs(1.1),abs(-3.3),abs(0);
sqrt:求二次方根(开方)
函数SQRT(x)返回非负数x的二次方根,负数没有平方根,返回结果为null
select sqrt(25),sqrt(120),sqrt(-9);
mod:求余数
函数mod(x,y)返回x被y除后的余数,mod()对于带小数部分的数据也会起作用,返回除法算后的余数
select mod(63,8),mod (120,10),mod(15.5,3);
ceil和ceiling:向上取整
函数ceil和ceiling的意义是相同的,返回不小于x的最小整数值,返回值转换为一个bigint
select ceil(-2.5),ceil(3.3),ceiling(2.5);
floor:向下取整
函数floor(x)返回小于x的最大整数值
select floor(5),floor(5.66),floor(-4),floor(-4.66);
rand:生成一个随机数
生成一个0-1之间的随机数
select rand(),rand(),rand();
round:四舍五入
返回最近于参数x的整数,round(x)函数对参数x进行四舍五入的操作,
select round(-6.6),round(-8.44),round(3.44);
sign:返回参数的符号
返回参数的符号x的值为负数,零和正数时分别返回-1,0,1
select sign(-6),sign(0),sign(34);
pow和 power:次方函数
函数用于计算x的y次方
select pow(5,-2),pow(10,3),power(4,3),pow(100,0),power(6,-3);
sin:正弦函数
sin(x)返回x的正弦值,x值为弧度值
select sin(1),sin(0.5*pi()),pi();
asin:求反正弦值,
select asin(30),asin(25);
MySQL字符串函数
函数名称 | 作用 |
---|---|
length | 计算字符串长度函数, |
concat | 字符串拼接 |
insert | 替换字符串函数 |
lower | 将字符串中的字母转换为小写 |
upper | 将字符串中的字母转换为大写 |
left | 从左侧截取字符串,返回字符串左边的若干个字符 |
right | 从右侧截取字符串,返回字符串右边的若干个字符 |
trim | 删除字符串左右两侧的空格 |
replace | 字符串替换函数,返回替换后的新字符串 |
substr和substring | 截取字符串 |
reverse | 字符串反转 |
length:返回字符串长度
返回值为字符串的字节长度,unicode码为utf8,为万国码,变长字符出,一个汉字占3个字节,一个数据或者字母占一个字节
select length('helloworld');
concat:字符串拼接
select concat('张三','java'),concat('李','四','java');
insert:替换字符串
insert(s1,x,len,s2)返回字符串s1,子字符串起始于x位置,并且用len个字符长的字符串代替为s2
select insert('java',2,4,'**')As col1,insert('shell',-1,4,'**')as col2,insert('张三学习java',3,20,'**')as col3;
lower:将字母转换为小写
lower(str)可以将字符串str中的字母全部转换为小写
select lower('张三JAVAZHANGSAN');
upper:将字母转换为大写
upper(str)可以将字符串str中的字母字符全部转换为大写
select upper('张三javazhangsan');
left:从左侧截取字符串
select left('张三java',2),left('李四java',4),left('王五',-1);
right:从右侧截取字符串
select right('张三java',2),right('李四java',4),right('王五',-1);
trim:删除字符串两侧空格
select ' [ zhagnsan ] ',concat('[ ,李四 ]'),trim( ' [ zhagnsan ] ');
substr和substring截取字符串
select substr('javaScipt',3)
select substr('javaScipt',3,2)
reverse:反转字符串
select reverse('张三java')
MySQL日期和时间函数
函数名称 | 作 用 |
---|---|
curdate 和 current_date | 两个函数作用相同,返回当前系统的日期值 |
curtime 和 current_time | 两个函数作用相同,返回当前系统的时间值 |
now 和 sysdate | 两个函数作用相同,返回当前系统的日期和时间值 |
unix_timestamp | 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数 |
from_unixtime | 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数 |
month | 获取指定日期中的月份 |
monthname | 获取指定日期中的月份英文名称 |
dayname | 获取指定曰期对应的星期几的英文名称 |
dayofweek | 获取指定日期是一周中是第几天,返回值范围是1~7,1=周日 |
week | 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53 |
dayofyear | 获取指定曰期是一年中的第几天,返回值范围是1~366 |
dayofmonth | 获取指定日期是一个月中是第几天,返回值范围是1~31 |
year | 获取年份,返回值范围是 1970〜2069 |
time_to_sec | 将时间参数转换为秒数 |
sec_to_time | 将秒数转换为时间,与TIME_TO_SEC 互为反函数 |
date_add 和 adddate | 两个函数功能相同,都是向日期添加指定的时间间隔 |
date_sub 和 subdate | 两个函数功能相同,都是向日期减去指定的时间间隔 |
addtime | 时间加法运算,在原始时间上添加指定的时间 |
subtime | 时间减法运算,在原始时间上减去指定的时间 |
datediff | 获取两个日期之间间隔,返回参数 1 减去参数 2 的值 |
date_format | 格式化指定的日期,根据参数返回指定格式的值 |
weekday | 获取指定日期在一周内的对应的工作日索引 |
curdate 和 current_date:返回当前系统的日期值
select curdate(),current_date,current_date+1;
curtime 和 current_time:返回系统当前时间
select curtime(),current_time,current_time+1;
now 和 sysdate:获取当前时间日期
select now(),sysdate();
unix_timestamp:获取unix时间戳
select unix_timestamp();
from_unixtime:时间戳转日期
格式 | 说明 |
---|---|
%M | 月名字 |
%W | 星期名字 |
%D | 有英语前缀的月份和日期 |
%Y | 年,数字,4位 |
%y | 年,数字,2位 |
%d | 月份的天数,(00-31) |
%e | 月份的天数,(0-31) |
%a | 缩写的星期名字 |
%m | 月,数字(01-12) |
%c | 月,数字(1-12) |
%b | 缩写的月份名字(Jan-Dec) |
%j | 一年中的天数(001-366) |
%H | 小时(00-23) |
%h | 小时(01-12) |
%l(L的小写) | 小时(1-12) |
%k | 小时(0-23) |
%I(i的大写) | 小时(01-12) |
%i | 分钟,数字(00-59) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%r | 时间,12小时(hh:mm:ss [AP]M) |
%T | 时间,24小时(hh:mm:ss) |
%p | AM或者PM |
%U | 星期(0-52)星期天是星期第一天 |
%u | 星期(0-52)星期一是星期的第一天 |
%% | 输出% |
select from_unixtime(1663989244),from_unixtime(1663989244,'%Y-%m-%d %H:%i:%s');
month:指定日期的月份
select month('2022-9-24'),month(now());
monthname:获取指定日期月份的英文名称
select monthname('2022-9-24'),monthname(now());
dayname:获取指定日期的星期名称
select now(),dayname(now());
dayofweek:获取日期对应的周索引
1表示周天,2表示周一,。。。。
select now(),dayofweek('2022-9-25');
week:获取指定日期是一年中的第几周
模式 | 一周的第一天 | 范围 |
---|---|---|
0 | 星期日 | 0-53 |
1 | 星期一 | 0-53 |
2 | 星期日 | 1-53 |
3 | 星期一 | 1-53 |
4 | 星期日 | 0-53 |
5 | 星期一 | 0-53 |
6 | 星期日 | 1-53 |
7 | 星期一 | 1-53 |
select now(),week('2022-12-31');
dayofyear:获取指定曰期是一年中的位置
select now(),dayofyear(now()),dayofyear('2020-12-31');
dayofmonth:获取指定日期在一个月的位置
select now(),dayofmonth(now()),dayofmonth('2020-12-31');
year:获取年份
select now(),year(now()),year('2020-12-31');
time_to_sec:将时间转换位秒值
select time_to_sec('5:5:5'),now(),time_to_sec(now());
sec_to_time:将秒转换为时间格式
select sec_to_time('18305'),now(),sec_to_time('42004');
date_add 和 adddate:向日期添加指定时间间隔
select date_add('2022-9-21',interval 365 day );
date_sub 和 subdate:日期减法运算
select date_sub('2022-9-21',interval 365 day );
addtime:时间加法运算
select addtime('2022-9-24 11:47:36','0:1:1');
subtime:时间减法运算
select subtime('2022-9-24 11:47:36','0:1:1');
datediff:获取两个时间的时间间隔
select datediff('2022-9-24','2019-12-26');
date_format:格式化指定的日期
select date_format('2022-9-24','%Y年%m月%d日');
weekday:获取指定日期在一周内的索引位置
select now(),weekday(now());
MySQL聚合函数
函数名称 | 作用 |
---|---|
max | 查询指定列的最大值 |
min | 查询指定列的最小值 |
count | 统计查询结果的行数 |
sum | 求和,返回指定列的总和 |
avg | 求平均值,返回指定列数据的平均值 |
MySQL流程控制函数
函数名称 | 作用 |
---|---|
if | 判断,流程控制 |
ifnull | 判断是否为空 |
case | 搜索语句 |
if:判断
if(expr,v1,v2)
当expr为真是返回v1的值,为假返回v2的值
select if(1<2,1,0),if(1>5,'√','×');
ifnull:判断是否为空
ifnull(v1,v2):当v1为空则放回v2,当v1有值则放回v1
select ifnull('非空','为空'),ifnull(null,'空'),ifnull('空',null),ifnull(null,null);
case:搜索语句
方式1:
case <表示式>
when<值1> then<操作>
。。。
else<操作>
end case;
方式2:
case
when<值1> then<命令>
。。。
else commands
end case;
create table t_stu(id int auto_increment comment '学号',name varchar(20) comment '姓名',sex tinyint comment '性别,0:未知,1:男,2:女',primary key (id)
)charset = utf8mb4 collate = utf8mb4_bin engine = InnoDB;insert into t_stu(name,sex) values ('张三',1),('李四',2),('王五',1);
insert into t_stu(name, sex) values ('赵六',3),('唐七',0);select id, name, sex from t_stu;
需求:查询所有学生信息,输出姓名,性别(男,女,未知)
select name '名字', (case sexwhen 1then '男'when 2then '女'else '未知' end) '性别' from t_stu;
其他函数
函数名称 | 作用 |
---|---|
version | 数据库版本号 |
database | 当前数据库 |
user | 当前连接用户名 |
password | 返回字符串密码形式 |
md5 | 返回字符串的md5数据 |
select version();
select database();
select user();
select password('123456');
select md5('zhangsan123456lisiwangwu123456')
相关文章:

MySQL函数
函数 MySQL函数与其存储过程类似,是一系列完成某种功能的SQL语句。函数一旦定义后,与过程一样是存储在MySQL的服务器上。调用函数就是一次性执行这些语句。所以函数可以降低语句重复。 MySQL本身提供了内置函数,这些函数的存在给我们日常的开…...

【Linux系统】开发工具(下) {调试器gdb,自动化构建工具make/Makefile,多文件编译,代码管理平台git}
【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的三种基本模式,vim指令集,代码编译器gcc/g} 四、Linux调试器:gdb 4.1 debug模式 程序的编译模式有两种,debug模式和…...

线性代数——行列式
文章目录版权声明排列行列式行列式的由来行列式的概念行列式的性质重要公式克拉默法则补充知识版权声明 本文大部分内容皆来自李永乐老师考研教材和视频课。 排列 由1,2,…,n1,2,\ldots,n1,2,…,n组成的有序数组称为一个nnn阶排列,通常使用j1j2…jnj_1j_2\ldots …...

Spring注解-Spring-boot-SpingAOP
Spring各个模块 Test 对应spring-test.jar. Spring提供的测试工具, 可以整合JUnit测试, 简化测试环节. Core Container Spring的核心组件, 包含了Spring框架最基本的支撑. Beans, 对应spring-beans.jar. Spring进行对象管理时依赖的jar包. Core, 对应spring-core.jar,…...

使用Shell传参解决DataPhin中PySpark不支持中文的问题
使用Shell传参解决DataPhin中PySpark不支持中文的问题 背景 笔者开发PySpark任务时【别问为神马不用Java和Scala打Jar包的方式,PySpark不需要打包所以开发效率极高,早点搞完早点下班】,遇到一个令所有SQL Boy都很头疼的问题,那就…...

【CDH】cloudera manger 如何开启Debug 日志调试模式
前言 在安装 Cloudera Manger 时,遇到报错,需要开启Debug 日志级别来排查下问题原因。这里记录下 CM 如何开启 Debug 级别。 方法一:为整个服务启动DEBUG 如果 CM 无法启动,则可以为整个服务器启用 DEBUG 或 TRACE。 警告&…...

SQL Server 用户授权与回收
创建xxbbbb账号,账号可以在Company_report20221019.dbo.qfacccmprf表中进行select、 insert,update,delete --创建登录账号 create login xxbbbb with password12345#---创建用户 use Company_report20221019 create user xxbbbb for login xxbbbb---将qfacccmprf表…...

电脑出现乱码的原因以及解决方法
在日常使用电脑的过程中,经常会遇到电脑出现乱码,那么为什么会出现乱码呢?出现乱码又该怎么解决呢?下面我们一起来了解一下。 出现乱码的原因 系统乱码:主要是Windows中显示乱码,比如菜单、桌面、启动界面…...

网络工程师笔记
第一天: 编码就是转化为数字信号;调制就是转化为模拟信号; 调制: 1、基带调制(不改变频率,只改变波形) 2、带通调制(迁移到较高的频段进行传输) (1&…...

linux用户添加用户组与目录切换用户组的操作记录
linux用户添加到多个组 usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组) 如:usermod -G git git (git只属于git组) usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响) 如:usermod…...

在CentOS 7上使用二进制文件安装单节点Kubernetes的详细步骤:
确保您的系统已经安装了Docker和etcd。如果没有,请按照以下命令安装它们: yum install docker etcd 启动Docker服务并将其设置为开机自启: systemctl start docker systemctl enable docker 下载所需的Kubernetes二进制文件。您可以从以下网…...

iCollections for mac 8.0.6.80608 保持Mac桌面的整洁
应用介绍 iCollections允许您在桌面上创建区域,以便您可以排序和排列图标。这可以帮助您将相关项目保持在一起,以便文件(图片,文档,屏幕截图,应用程序等)井井有条且易于查找。 小麦测试可以按照…...

学习HM微博项目第8天
步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和发送微博按钮 -> 发微博04-显示工具条 -> 发微博05-封装工具条和相册 -> 发微博06-发送微博 发微博01-导航栏内容 APP的演示操作: 从APP的演示操作中可…...

十五、存储过程与函数
一、存储过程概述 1、简介 含义:存储过程的英文是 Stored Procedure 。它的思想很简单,就是一组经过 预先编译 的 SQL 语句的封装 执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器…...

php实现助记词转TRX,ETH 私钥和钱包地址
TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言。【狗头】 一、知识准备 要实现助记词转TRX私钥和地址,先需要知道助记词和私钥钱包地址之间的…...

浅析可观测系统中sdk的不同引入方式的利与弊
文章前提是不考虑sw的方式引入,同时不考虑在nginx等自动注入js脚本的方式,那么基本就是两种大的形式:cdn引入和本地引入其中cdn引入有两种:cdn同步cdn异步本地引入有两种:npm本地js文件参考知识提前先补充一张图片正文…...

Google Earth导入经纬高(txt文件)
目录 一、提取GNSS数据生成txt文本文件 二、Google Earth导入txt文件 1、启动Google Earth 2、打开vig_result.txt...

Unity客户端开发工程师的进阶之路
UWA技能成长系统是UWA根据学员的职业发展目标,提供技能学习的推荐路径,再将所需学习内容按难易等多维度,设计分成多个学习阶段,可以循序渐进地进行学习。 进入技能成长体系,目标选择高级客户端开发工程师(U…...

2023年全国最新高校辅导员精选真题及答案34
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 72.心理发展的特点是()。 A.方向性与不可逆性 B.连续性与阶段性…...

chatGPT身份指令
充当 Linux 终端 我想让你充当 Linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情时&…...

基于springboot实现私人健身与教练预约管理系统【源码+论文】分享
基于springboot实现私人健身与教练预约管理系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea M…...

网络技术领域术语大全,含中英文及缩写,强烈建议收藏!
你好,这里是网络技术联盟站。 今天给大家分享的是网络技术领域相关的术语大全,在文末,我已经将本文整理成一个pdf文档了,大家可以下载到本地以便查阅。 自主访问控(DAC:Discretionary Access Control) 自主访问控制(DAC)是一个…...

C++源码剖析——vector和array
前言:之前看过侯老师的《STL源码剖析》但是那已经是多年以前的,现在工作中有时候查问题和崩溃都需要了解实际工作中使用到的STL的实现。因此计划把STL的源码再过一遍。 摘要:本文描述了llvm中libcxx的std::vector的实现。 关键字&…...

学习linux编程(一)
本文导航一. Linux基础知识杂记0. terminal操作快捷键等1. 为什么vfork的子进程里用return,整个程序会挂掉,而且exit不会(zz)2. 进程内存管理详解3. 关于堆和自由存储区概念的区别4. cache和buffer的区别5. C实现线程池6. 静态函数和虚函数的区别7. C里是…...

pt-query-digest_详细使用方法
pt-query-digest_详细使用方法1. pt介绍1.1. 说明1.2. 安装2 语法选项2.1 所有参数2.2 常见参数2.3 事件和属性2.4 分组2.5 过滤2.6 排序2.7 输出选项2.8 DSN(数据源)选项3. 慢日志3.1 事件属性3.2 分析报告3.2.1 第一部分:总体概况说明3.2.2 第二部分:查…...

基于MATLAB编程的萤火虫FA优化BP神经网络的回归分析
目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络激活函数及公式 SVM应用实例,基于fa-svm分类预测 代码 结果分析 展望 BP神经网络的原理 BP神经网络的定义 人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过…...

leetcode 消失的数字(面试题)
题目 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入&…...

Spring入门篇6 --- AOP
目录1.核心概念AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构作用:在不惊动原始设计的基础上为其进行功能增强。连接点(JoinPoint):程序执行过程中的任意位置切入点(PointCut)ÿ…...

linux 配置java环境
1、上传jdk包到/usr/local/java目录下 2、解压jdk的tar包 tar -zxvf jdk-8u291-linux-x64.tar.gz 3、添加配置(环境变量) 注意:JAVA_HOME值为实际jdk路径 打开配置文件 vi /etc/profile 最下面添加: #set java environment JAVA_HOME/usr/…...

分布式事务基础入门
分布式事务基础入门 什么是分布式事务 什么是分布式事务? 首先理解什么是本地事务? 平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务࿰…...