【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)
相关推荐
臻一2 小时前
rk3576+安卓14 ---上电时序调整
android
踢球的打工仔3 小时前
typescript-接口的基本使用(一)
android·javascript·typescript
qq_366086224 小时前
SQL Server 之 Full-Text Search 全文搜索
运维·服务器·数据库
李少兄4 小时前
数据库开发中的布尔表示:0 与 1 的语义规范
数据库·数据库开发
小王努力学编程4 小时前
LangChain——AI应用开发框架(核心组件1)
linux·服务器·前端·数据库·c++·人工智能·langchain
麦聪聊数据5 小时前
重构数据交付链路:基于 API 网关实现数据工程与业务分析的解耦
数据库·sql
2501_915918415 小时前
如何在iPad上找到并打开文件夹的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
SJLoveIT5 小时前
深度复盘:海量数据下的 SQL 优化与生命周期治理
数据库·sql
TH_15 小时前
37、SQL的Explain
java·数据库·sql