【MySQL】--- 内置函数

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:        9ilk

(๑•́ ₃ •̀๑) 文章专栏:     MySQL



🏠 时间函数

约定:我们在MySQL中说的日期指的是年 月 日,时间指的是时 分 秒。

🧷 now()

select now();

测试结果:

  • now()返回当前日期时间。

🧷 current系列

1. current_date():返回当前日期

select current_date();

测试结果:

2. current_time():返回当前时间

select current_time();

测试结果:

3. current_timestamp(): 返回当前时间戳。

select current_timestamp();

测试结果:

  • 对于时间戳,系统会帮我们自动转化我日期时间。

🧷 date系列

1. date(datetime) :返回参数的日期部分。

select date('1949-10-01 00:00:00');

测试结果:

MySQL中函数也是可以嵌套使用的:

select date(now()); //函数嵌套拿到当前日期

测试结果:

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

  • interval后的数值单位时可以是year minute second  hour day month
  • 可以加上负数也可以加上正数
select date_add('1949-01-01',interval 10 day);
select date_add('1949-01-01',interval -10 day);
select date_add(now(),interval 10 day);
select date_add(now(),interval 10 year);
select date_add(now(),interval 10 minute);
select date_add(now(),interval 10 second);

测试结果 :

3. date_sub() : 在原日期基础上减去参数

  • interval后的数值单位也是year,month,day,hour,minute,second。
select date_sub('1949-01-01',interval -10 month);
select date_sub(now(),interval 10 hour);

测试结果:

4. datediff(date1,date2) : 返回两个日期的差,单位是天

  • 注意是前者-后者
select datediff('2017-10-10','2016-09-01');
select datediff('2010-10-10','2016-09-01');

测试结果:

🧷 案例

1. 案例一:

  • 创建一张表,记录生日
create table tmp(id int primary key auto_increment,birthday date
);

查看表的详细信息:

  • 添加生日
insert into tmp (birthday) values('1980-01-01');
insert into tmp (birthday) values(current_date());
insert into tmp (birthday) values(current_time());

测试结果:

  • 我们发现current_time也可以插入,其实所有时间获取时都有年月日时分秒,只不过不同函数显示不同。

结论:以后我们在时间插入时先看你的需求,是日期你用日期函数就可以了。

2. 案例2

  • 创建一个留言表
create table msg (id int primary key auto_increment,content varchar(30) not null,sendtime datetime
);

查看表的详细信息:

  • 插入数据
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;
  • 显示所有留言信息,发布日期只显示日期,不用显示时间
select content,date(sendtime) from msg;

测试结果:

  • 请查询在2分钟内发布的帖子

select content,sendtime from msg where sendtime > date_sub(now(),interval 2 minute);
select * from msg where date_add(sendtime, interval 2 minute) > now();

测试结果:

🏠 字符串函数

🎵 charset(str): 返回字符串字符集

select charset('abcd');
select charset('中国');
select charset(ename) from emp; //查看表中字段

测试结果:

🎵 concat(string,[...]): 连接字符串

select concat('a','b','c') as res;
select concat('a','b','c',123,3.14) as res;//即便你传的是整数也会转成字符串拼接

测试结果:

注:即便你传的是整数也会转成字符串拼接。

  • 以首字母小写的方式显示所有员工的姓名
select concat(lcase(substring(ename, 1, 1)),substring(ename,2)) from EMP;

测试结果:

🎵 instr(string,substr): 返回substr在string里出现的位置,没有返回0

select instr('abcd1234efg','1234'); //下标从1开始 返回下标5
select instr('abcd1234efg','1134'); //找不到返回0 

测试结果:

  • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from
student;

测试结果:

🎵 ucase lcase

  • ucase:将小写转换成大写字母,其他不是字母的不做处理。
select ucase('abcd1234ABCD');

测试结果:

  • lcase:将大写字母转换成小写字母,不是字母的不处理。
select lcase('abcd1234ABCD');

测试结果:

🎵 left right

  • left(str,length): 从str左边起取length个字符,如果超出字符串长度,有多少取多少 
select left('abcd1234',4);
select left('abcd1234',9);

测试结果:

  • right(str,length):从str右边起,取length个字符,length过大则有多少拿多少。
select right('abcd1234',4);
select right('abcd1234',9);

测试结果:

🎵 length(str): 返回length的长度

select length('abcd1234');
select length(''); 
select length(' '); 

测试结果:

  • 求学生表中学生姓名占用的字节数

select length(name), name from student;

测试结果:

注: length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关。

说明:在msql中,length()函数返回的是字符串的字节长度,而不是字符的个数。如果字符串中包含非asci字符(如中文字符),它们的字节长度通常大于1,asci字符字节数是1;例子中每个中文字符在utf-8编码下占用3个字节,因此是9。

🎵 replace(str,search str,replace str) : 在str中用rstr替换sstr

select replace(ename, 'S', '上海') ,ename from EMP;

测试结果:

注:实际上这个只是字符串级别的替换,数据库原始数据并不替换。

🎵 substring(str,pos,[length]):从str的pos开始取length个字符,没有给length则取全部

select substring(ename, 2, 2), ename from EMP;

 测试结果:

🎵  ltrim rtrim trim

  • ltrim清空str左边空格
  • rtrim清空str右边空格
  • trim清空左右两边的空格。
select  ltrim('    你好    ');
select  trim('    你好    ');
select  rtrim('    你好    ');

测试结果:

注:如果字符串的字符中间有空格是无法清空的。

🏠 数学函数

🧷 进制转换

1. bin():十进制转二进制

select bin(20);
select bin(3.14);  //其实是转成3
select bin(3.54); 

测试结果:

注:对于浮点数其实是按照它们的整数部分来转的。

2. hex(): 十进制转换成十六进制

select hex(11);
select hex(16); //是1 0不是10

测试结果:

3. conv(num,from_base,to_base):指定进制转换

SELECT conv(10,10,16); //10进制->16进制
SELECT conv(10,10,4);   //10进制->4进制

测试结果:

🧷 数值运算

1. abs(): 绝对值函数

select abs(12) ;
select abs(-12) ;
select abs(-12.3) ;

测试结果:

2. format(num,decimal_places): 格式化,指定保留小数位数

select format(3.1415926,2); //保留两位精度
select format(3.1415926,8); //保留8位精度

测试结果:

3. mod(num,denominator): 取模求余

select mod(10,3);
select mod(-10,-3);
select mod(10,-3);

测试结果:

注:这里取整方式是向0取整。

4. rand():返回随机浮点数,范围[0.0,1.0]

select rand(); //[0.0,1.0]

测试结果:

如果我想范围为[0,100]的浮点数呢?

select rand()*100; //[0.0,1.0]
select format(rand()*100,0); //只要整数部分

测试结果:

5. 取整:ceiling floor

关于取整方式:

  • ceiling:向上取整。
select ceiling(3.1);
select ceiling(3.001);
select ceiling(-3.9);

测试结果:

  • floor:向下取整。
select floor(4.5);
select floor(4.9);
select floor(-4.1);

测试结果:

🏠 其他函数

1.user() 查询当前用户

select user();

测试结果:

2. database()显示当前正在使用的数据库

select database();

3. md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

select md5('admin');

测试结果:

4.password()函数,MySQL数据库使用该函数对用户加密

select password('root');

测试结果:

注: 从MySQL5.7.6开始,PASSWORD()函数已经被废弃(deprecated),而从MySQL8.0 开始,它被完全移除了。你可以使用SHA2来加密。

5. ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

  • 如果第一个参数不为空则用第一个;第一个参数为空,第二个参数不为空则用第二个;两个都为空,返回NULL。
select ifnull('abc', '123');
select ifnull(null, '123');
select ifnull(null, null);

测试结果:


 完。

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

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

相关文章

springboot和vue项目前后端交互

java后端开发常用springboot框架,开发简单不繁琐,容易上手。简简单单配置好一些配置项,整个web项目就能运行起来了。vue前端也是比较流行的前端开发框架,写起来简单,组件也丰富,参考资料多。 这期就应薯薯…

酒店管理系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

OkHttp接口自动化测试

文章目录 java环境搭建OkHttp之getOkHttp之POSTPOST发送From表单POST发送jsonPOST上传文件 OkHttp之deleteOkHttp之put java环境搭建 引入依赖 <!--okhttp3--><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</art…

分数阶傅里叶变换代码 MATLAB实现

function Faf myfrft(f, a) %分数阶傅里叶变换函数 %输入参数&#xff1a; %f&#xff1a;原始信号 %a&#xff1a;阶数 %输出结果&#xff1a; %原始信号的a阶傅里叶变换N length(f);%总采样点数 shft rem((0:N-1)fix(N/2),N)1;%此项等同于fftshift(1:N)&#xff0c;起到翻…

【Rust练习】26.Package and Crate

练习题来自&#xff1a;https://practice-zh.course.rs/crate-module/crate.html 建议在命令行下操作完成本节内容&#xff0c;Windows 11/10 首选 Windows 终端&#xff0c;好看&#xff0c;支持渲染中文字体&#xff0c;缺点是功能太少了&#xff1b;其次推荐 mobaxterm&…

Python实现接口签名调用

目录: 1、第三方接口签名调用2、调用结果 1、第三方接口签名调用 import json import requests import hashlib import time import hmac access_key xxxxxxxxxxxxxxx secret_key xxxxxxxxxxxxxxx # 应用信息 def _wps4_sig(method, url, date, body): print(body)if bod…

df.replace({‘b‘: r‘\s*(\.)\s*‘}, {‘b‘: r‘\1ty‘}, regex=True)

这段代码 df.replace({b: r\s*(\.)\s*}, {b: r\1ty}, regexTrue) 用于在 DataFrame 中进行替换操作&#xff0c;具体来说是针对 b 列&#xff0c;匹配并替换符合正则表达式的值。 详细解析&#xff1a; df.replace()&#xff1a;这是 Pandas 中的 replace() 方法&#xff0c;用…

js的一些处理

1.翻转字符串 let str abcdef str str.split().reverse().join() console.log(str) 因此想到了我之前写的截取字符串获取参数跳转&#xff0c;在写一遍 let str nameJack&age18&gender男 let list str.split(&); let obj {} list.forEach((v)>{ …

单片机串口控制

1.使用微控制器输入串口指令控制LED灯亮灭 main.c #include "uart4.h"int main() {led_init(); //初始化LED相关寄存器char buf[128];while(1){gets(buf);if(mystrcmp(buf,"LED1_on") 0){led_ctl(1,1); //当在串口工具中输入"LED1_on"时控制L…

物联网开发利器:基于web的强大的可拖拽组态软件

随着互联网、物联网技术的快速发展&#xff0c;BY组态基于多年研发积累和私有部署实践打磨、以及对业务场景的深入理解&#xff0c;推出了适用于物联网应用场景的轻量型web组态软件。 该产品采用 B/S 架构&#xff0c;提供 web 管理界面&#xff0c;软件包大小仅 50MB&#xf…

【开源免费】基于SpringBoot+Vue.JS保密信息学科平台(JAVA毕业设计)

本文项目编号 T 112 &#xff0c;文末自助获取源码 \color{red}{T112&#xff0c;文末自助获取源码} T112&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

ceph文件系统

ceph文件系统&#xff1a;高度可扩展&#xff0c;分布式的存储文件系统&#xff0c;旨在提高性能&#xff0c;高可靠性和高可用的对 象存储&#xff0c;块存储&#xff0c;文件系统的存储。使用分布式的算法保证数据的高可用和一致性。 ceph的组件 1、MON&#xff1a;ceph m…

MySQL 入门大全:运算符

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

Px4 V2.4.8飞控Mavlink命令控制说明

首先&#xff0c;可以使用两种方法连接飞控&#xff0c;使用虚拟机&#xff08;LINUX&#xff09;或使用地面站&#xff08;QGC&#xff09;连接。 在px4的代码文件位置打开命令终端&#xff0c;输入连接命令&#xff1a; ./Tools/mavlink_shell.py 在控制台使用help来获取所有…

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习

文章目录 Section 4&#xff1a;The Vim Help System&#xff08;Vim 帮助系统&#xff09;S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…

java Redisson 实现限流每秒/分钟/小时限制N个

1.引入maven包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>red…

C# 标准数字格式字符串

总目录 前言 当前文章为 C# 中的格式设置(格式化字符串) 大全 中的一个小章节。 一、概述 1. 基本信息 标准数字格式字符串用于格式化通用数值类型。标准数字格式字符串采用 [format specifier][precision specifier] 的形式 format specifier 格式说明符&#xff0c;负责指…

网络分析工具-tcpdump

文章目录 前言一、tcpdump基础官网链接命令选项详解常规过滤规则tcpdump输出 一、tcpdump实践HTTP协议ICMP状态抓包 前言 当遇到网络疑难问题的时候&#xff0c;抓包是最基本的技能&#xff0c;通过抓包才能看到网络底层的问题 一、tcpdump基础 tcpdump是一个常用的网络分析工…

【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级

模型参数规模泄露&#xff1a;理解大型语言模型的参数量级 关键词&#xff1a; #大型语言模型 Large Language Model #参数规模 Parameter Scale #GPT-4o #GPT-4o-mini #Claude 3.5 Sonnet 具体实例与推演 近日&#xff0c;微软在一篇医学相关论文中意外泄露了OpenAI及Claud…

springboot集成qq邮箱服务

springboot集成qq邮箱服务 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域&#xff0c;如果当前账号未开启的话自己手动开启。 1.3 获取授权码 进入上图中的【管理服务】后&#xff1a;在【安全设置中生成授权码】,也可以直接点击【继续生成…