【MySQL篇】MySQL内置函数

目录

1,日期函数

2,字符串函数

3,数学函数

4,其他函数

实战OJ


1,日期函数

日期类型在之前文章【数据类型】中有描述

传送门: 【MySQL篇】数据类型_mysql 数据类型-CSDN博客

|--------------------------------------|-------------------------------------------------------|
| 函数名称 | 描述 |
| current_date() | 当前日期 |
| current_time() | 当前时间 |
| current_timestamp() | 当前时间戳 |
| date(datetime) | 返回datetime参数的部分日期 |
| date_add(date,interval d_value_type) | 在date中添加日期或时间,interval关键字后可以是:year,mintue,second,day |
| date_sub(date,interval d_value_type) | 在date中减去日期或时间,interval关键字后可以是: year,minute,second,day |
| datediff(date1,date2) | 两个日期的差,单位是天 |
| now() | 当前日期时间 |

  • 获得当前日期(年月日)

  • 获得当前日期(时分秒)

  • 获取当前日期

  • 获得时间戳

  • 在日期的基础上加上日期

  • 在日期的基础上减去时间

  • 计算两个日期之间相差多少天

案例1:创建一张生日表,记录生日

mysql> create table tmp(

-> id int primary key auto_increment,

-> birthday date);

  • 添加当前日期

mysql> insert into tmp (birthday) values (current_date());

  • 案例2:创建一张留言表

mysql> create table msg(
-> id int primary key auto_increment,
-> content varchar(30) not null,
-> sendtime datetime);

  • 插入数据

mysql> insert into msg (content,sendtime) values ('hello1',now());

mysql> insert into msg (content,sendtime) values ('hello2',now());

  • 显示所有留言信息,只显示日期,不显示时间

mysql> select content,date(sendtime) from msg;

  • 查询2分钟内发布的留言

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

2,字符串函数

|------------------------------------------|-------------------------------|
| charset(str) | 返回str的字符集 |
| concat(string,[...]) | 连接字符串 |
| instr(str,substring) | 返回substring在str中出现的位置,没有返回0 |
| ucase(string2) | 转换成大写 |
| lcase(string2) | 转换成小写 |
| left(string2,length) | 从string2的左边起,取length个字符 |
| length(string) | string的长度,单位是字节 |
| replace(str,search_str,raplace_str) | 在str中用replace_str替换search_str |
| strcmp(string1,string2) | 比较两字符串的大小 |
| substring(string,postion,length) | 从string的postion开始,读取length个字符 |
| ltrim(string) rtrim(string) trim(string) | 去除前空格或后空格(见示例) |

示例:

  • 查看字符的编码集

  • 连接字符串
  • 判断一个字符是否在另一个字符串中出现

  • 大小写转换

  • left,right函数
  • length求字符串长度,单位是字节 (utf8下一个整数3个字节)

案例:

  • 首先创建一张员工表

  • 插入数据

  • 获取emp表的ename列的字符集 (如果表中有些部分出现乱码,可以查看插入数据的编码和mysql的编码是否一致)

mysql> select charset(ename) from emp;

  • 将emp表中所有名字中有 S的替换成 '上海'

mysql> select ename,replace(ename,'S','上海') from emp;

  • 截取emp表中ename字段的第2到3个字符

mysql> select ename,substring(ename,2,2) from emp;

  • 以首字母小写的方式显示所有员工的姓名

mysql> select concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;

3,数学函数

|--------------------------------|---------------------|
| 函数名称 | 描述 |
| abs(num) | 绝对值函数 |
| bin(decimal_number) | 十进制转二进制 |
| hex(decimal Number) | 转换成十六进制 |
| conv(number,form_case,to_base) | 进制转换 |
| ceiling(number) | 向上取整 |
| floor(number) | 向下取整 |
| format(number,decimal_places) | 格式化,保留小数位数 |
| rand() | 返回随机浮点数,范围【0.0,1.0) |
| mod(number,denominator) | 取模,求余数 |
| | |

示例:

  • 绝对值

  • 向上取整

  • 向下取整

  • 保留两位小数位数 (四舍五入)

  • 十进制转化成二进制

  • 把一个数字从一个进制转化成另一个进制

  • 转化成十六进制

  • 产生随机数

4,其他函数

  • user查询当前用户

mysql> select user();

  • md5(str)对一个字符串进行md5摘要,摘要后的得到一个32位字符串 ,可以保证用户信息的安全性

mysql> create table user(
-> id int primary key auto_increment,
-> name varchar(20),
-> password char(32) not null);

插入数据

mysql> insert into user (name,password) values ('张三',md5('12345'));
mysql> insert into user (name,password) values ('李四',md5('21090'));

  • database(),显示当前正在使用的数据库

mysql> select database();

  • ifnull(val1,val2),如果val为null,返回val2。否则返回val1

实战OJ

查找字符串中逗号出现的次数_牛客题霸_牛客网

复制代码
select id,length(string)-length(replace(string,',','')) cnt from strings;
相关推荐
nongcunqq2 小时前
abap 操作 excel
java·数据库·excel
rain bye bye3 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼3 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术4 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师4 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779135 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分5 小时前
pom.xml
xml·数据库
虚行5 小时前
Mysql 数据同步中间件 对比
数据库·mysql·中间件
奥尔特星云大使5 小时前
mysql读写分离中间件Atlas安装部署及使用
数据库·mysql·中间件·读写分离·atlas
牛马baby5 小时前
【mysql】in 用到索引了吗?
数据库·mysql·in