一、内置函数
(1)数字函数
绝对值
SELECT abs (-1);
取余
select mod (10,3);
向下取整
select floor(3.5);
向上取整
SELECT ceiling(2.4);
四舍五入
SELECT round(3.5);
SELECT round(3.4);
x的y次方
SELECT pow(3,2);
获取圆周率
SELECT PI();
随机数 0-1 之间
SELECT rand();
SELECT rand(n);
(2)字符串函数
字符串转 ASCII
select ascii('a');
ASCII 转 字符串
select char(97);
拼接
SELECT CONCAT('l','z','y');
字符串长度
SELECT LENGTH("lzy");
字符串截取,注意,str 下标从 1 开始,非从零开始
substring (str, pos, len) # 对于str,从pos 开始, 取的len 长度的字符串为止
SELECT left(str,len)/right(str,len)/substring(str,pos,len);
SELECT left(123456,3),right(123456,3),SUBSTRING(123456,3,3);
两边删除默认空格
# 左删除 /右删除 /两边删除/ (两边删除 固定 字符, 左边删除固定字符,,,右边删除固定字符 )
select ltrim()/rtrim()/trim()/trim(both/leading/trailing re_tr from str);
SELECT ltrim(" lzy "),rtrim(' lzy '),trim(' lzy '),trim(both "." from '..lzy..'),trim(leading "." from '..lzy..'),trim(trailing "." from '..lzy..');
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f9f8178eb37268382b30f53d0796819e.png)
产生 n 个空格
select space(n);
替换
select replace(str,from_str,to_form);
select REPLACE('lzy','zy','yz');
SELECT REPLACE(12345,45,4050);
大小写切换
select upper(str)/lower(str);
select upper('lzy'),lower('LZY');
test 练习
# 将所有员工姓名转化成小写
select ename,lower(ename) from emp where 1=1;
# 将员工姓名和部门用 - 连接
SELECT concat(ename,'-',deptno) from emp where 1=1;
(3)日期时间函数
获取当前日期
select current_date()/curdate(); # 也可以不加()
select current_date(),curdate();
获取当前时间
select current_time()/curtime();
SELECT CURRENT_TIME(),curtime();
获取当前时间
select now();
获取特定的值
括号内需加上时间日期
select year(now());
select month(now());
select day(now());
select hour(now());
select minute(now());
select second(now());
格式化输出
data_format(date,format)
format 格式有:
%y 21 %Y 2021
%m
%d
%h 12小时制 %H 24 小时制
%i
%s
select date_format(now(),'%Y/%m/%d - %h:%i:%s');
给时间添加指定的时间间隔
expre 表示时间间隔,unit 表示类型
SELECT DATE_ADD(date,INTERVAL expr unit)
SELECT date_add(now(),interval 1 DAY);
给日期减去指定的时间间隔
SELECT DATE_SUB(date,INTERVAL expr unit)
SELECT DATE_SUB(now(),interval 1 DAY);
返回两个日期之间的天数,
只有值得部分进行运算 date1-date2 date 记得加引号
DATEDIFF(expr1,expr2)
SELECT DATEDIFF('2021/08/25','2021/08/24');
返回两个时间之间的差值,
只有值得部分进行运算 date 记得加引号
TIMEDIFF(expr1,expr2)
SELECT TIMEDIFF('10:05','09:05');