【MySQL】内置函数

目录

函数

1、日期函数
函数名称 描述
current_date() 当前日期
current_time() 当前时间
current_timestamp() 当前时间戳
date(datetime) 返回datetime参数的日期部分
date_add(date,interval d_value_type) 在date中添加日期或时间 interval后的数值单位可以是:year minute second day
date_sub(date,interval d_value_type) 在date中减去日期或时间 interval后的数值单位可以是:year minute second day
datediff(date1,date2) 两个日期的差,单位是天
now() 当前日期时间
  • 获得年月日:
sql 复制代码
select current_date();
	+----------------+
	| current_date() |
	+----------------+
	| 2017-11-19     |
	+----------------+
  • 获得时分秒:
sql 复制代码
select current_time();
	+----------------+
	| current_time() |
	+----------------+
	| 13:51:21       |
	+----------------+
  • 获得时间戳:
sql 复制代码
select current_timestamp();
	+---------------------+
	| current_timestamp() |
	+---------------------+
	| 2017-11-19 13:51:48 |
	+---------------------+
  • 在日期的基础上加日期:
sql 复制代码
select date_add('2017-10-28', interval 10 day);
	+-----------------------------------------+
	| date_add('2017-10-28', interval 10 day) |
	+-----------------------------------------+
	| 2017-11-07 							  |
	+-----------------------------------------+
  • 在日期的基础上减去时间:
sql 复制代码
select date_sub('2017-10-1', interval 2 day);
	+---------------------------------------+
	| date_sub('2017-10-1', interval 2 day) |
	+---------------------------------------+
	| 2017-09-29 						    |
	+---------------------------------------+
  • 计算两个日期之间相差多少天:
sql 复制代码
select datediff('2017-10-10', '2016-9-1');
	+------------------------------------+
	| datediff('2017-10-10', '2016-9-1') |
	+------------------------------------+
	| 404 								 |
	+------------------------------------+
2、字符串函数
函数名称 描述
charset(str) 返回字符串字符集
concat(string [,...]) 连接字符串
instr(string,substring) 返回substring在string中出现的位置,没有返回0
ucase(string2) 转换成大写
lcase(string2) 转换成小写
left(string2,length) 从string2中的左边取length个字符
length(string) string的长度
replace(str,search_str,replace_str) 在str中用replace_str替换search_str
strcmp(string1,string2) 逐字符比较字符串的大小
substring(str,position [,length]) 从str的postion开始,取length个字符
ltrim(string) rtrim(string) trim(string) 去除前空格和后空格
  • 获取emp表的ename列的字符集
sql 复制代码
select charset(ename) from EMP;
  • 要求显示exam_result表中的信息,显示格式:"XXX的语文是XXX分,数学XXX分,英语XXX分"
sql 复制代码
select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from student;
  • 求学生表中学生姓名占用的字节数
sql 复制代码
select length(name), name from student;

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

  • 将EMP表中所有名字中有S的替换成'上海'
sql 复制代码
select replace(ename, 'S', '上海') ,ename from EMP;
  • 截取EMP表中ename字段的第二个到第三个字符
sql 复制代码
select substring(ename, 2, 2), ename from EMP;
  • 以首字母小写的方式显示所有员工的姓名
sql 复制代码
select concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) from EMP;
3、数学函数
函数名称 描述
abs(number) 绝对值函数
bin(decimal_number) 十进制转二进制
hex(decimalNumber) 转换成十六进制
conv(number,form_base,to_case) 进制转换
ceiling(number) 向上去整
floor(number) 向下去整
format(number,decimal_places) 格式化,保留小数位数
hex(decimalNumber) 转换成十六进制
rand() 返回随机浮点数,范围[0.0,0.1]
mod(number,denominator) 取模,求余
  • 绝对值
sql 复制代码
select abs(-100.2);
  • 向上取整
sql 复制代码
select ceiling(23.04);
  • 保留2位小数位数(小数四舍五入)
sql 复制代码
select format(12.3456, 2);
  • 产生随机数
sql 复制代码
select rand();
4、其他函数
  • user() 查询当前用户
sql 复制代码
select user();
  • md5(str) 对一个字符串进行md5摘要,摘要后得到一个32位字符串
sql 复制代码
select md5('admin')
sql 复制代码
+----------------------------------+
| md5('admin') 					   |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
  • database() 显示当前正在使用的数据库
sql 复制代码
select database();
  • password() 函数,MySQL 数据库使用该函数对用户加密
sql 复制代码
select password('root');
	+-------------------------------------------+
	| password('root')						    |
	+-------------------------------------------+
	| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
	+-------------------------------------------+
  • ifnull(val1, val2) 如果 val1 为 null,返回 val2,否则返回 val1 的值
sql 复制代码
select ifnull('abc', '123');
	+----------------------+
	| ifnull('abc', '123') |
	+----------------------+
	| abc 				   |
	+----------------------+
	1 row in set (0.01 sec)
	
select ifnull(null, '123');
	+---------------------+
	| ifnull(null, '123') |
	+---------------------+
	| 123 				  |
	+---------------------+
	1 row in set (0.00 sec)
相关推荐
whn19778 小时前
查询日期报错,参数DATETIME_FMT_MODE
数据库·sql
Gauss松鼠会9 小时前
GaussDB(DWS) GUC参数修改、查看
java·数据库·sql·数据库开发·gaussdb
米高梅狮子9 小时前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
滴滴答答哒9 小时前
.NET Core 基于 AOP + Polly 实现数据库死锁自动重试
数据库·.netcore·sqlsugar
yuzhiboyouye10 小时前
所有的 SQL 都要经过 Explain 优化,是什么意思
数据库·sql
洛水水10 小时前
Redis 实现限流功能的几种方法
数据库·redis·缓存
l1t10 小时前
DeepSeek总结的postgresql 数据分析师 vs width_bucket()
数据库·postgresql
米高梅狮子10 小时前
Redis
数据库·redis·mysql·缓存·docker·容器·github
dinl_vin10 小时前
FastAPI 系列 ·(四):数据库集成——SQLAlchemy 2.0 异步 ORM 与 Alembic 迁移
java·数据库·fastapi
lvronglee10 小时前
【数字图传第四步】Android App查看图传视频
android·音视频