Mysql中的基本函数使用
-- 绝对值
SELECT ABS(-100);
-- 四舍五入
SELECT ROUND(4.62);
-- 强制舍位到最近的整数
SELECT FLOOR(99.9);
-- 强制进位到最近的整数
SELECT CEIL(3.2);
-- 幂函数 2的三次方
SELECT POWER(2,3);
-- 对数函数 以7为底3的对数
SELECT LOG(7,3);
-- 对数函数 以e为底10的对数
SELECT LN(10);
-- 开平方
SELECT SQRT(9);
-- 圆周率
SELECT PI();
-- 角度转弧度
SELECT RADIANS(30);
-- 三角函数
SELECT SIN(RADIANS(30));
SELECT COS(RADIANS(45));
SELECT TAN(RADIANS(30));
SELECT COS(RADIANS(45));
-- 弧度转角度
SELECT DEGREES(1);
-- 获取系统的日期和时间 ,格式yyyy-MM-dd hh:mm:ss
SELECT NOW();
-- 获取当前系统的日期 ,格式yyyy-MM-dd
SELECT CURRENT_DATE();
-- 获取当前系统的时间 ,格式hh:mm:ss
SELECT CURRENT_TIME();
-- 日期格式化
-- %Y 年份
-- %m 月份
-- %d 日期
-- %w 星期(数字)
-- %W 星期(名称)
-- %j 本年的第几天
-- %U 本年的第几周
-- %H 小时(24小时制)
-- %h 小时(12小时制)
-- %i 分钟
-- %s 秒
-- %r 时间(12) 包含小时分钟秒
-- %T 时间(24) 包含小时分钟秒
SELECT DATE_FORMAT("1985-06-15","%Y") AS 'year';
SELECT DATE_FORMAT("2021-02-02","%w");
SELECT DATE_FORMAT("2021-02-02","%W");
-- 日期偏移计算
-- DATE_ADD(date,INTERVAL expr unit) 可以实现日期的偏移计算,而且计算时间灵活
SELECT DATE_ADD(NOW(),INTERVAL 15 DAY);
SELECT DATE_ADD(NOW(),INTERVAL -300 MINUTE);
SELECT DATE_ADD(DATE_ADD(NOW(),INTERVAL -6 MONTH),INTERVAL -3 DAY);
-- 日期之间的相隔天数
SELECT DATEDIFF(NOW(),"2020-12-31");
-- 字符函数
-- LOWER(str) 转换小写字符
SELECT LOWER("HellO");
-- UPPER(str) 转换大写字符
SELECT UPPER("hello");
-- LENGTH(str) 字符数量
SELECT LENGTH("hello");
-- CONCAT(str1,str2,...) 连接字符串
SELECT CONCAT("Hello",",","World");
-- INSTR(str,substr) 字符串出现的位置
SELECT INSTR("ABC","B");
-- INSERT(str,pos,len,newstr) 插入/替换字符 pos表示往什么地方插入 len表示替换几个字符
SELECT INSERT("你好",1,0,"Ambition");
SELECT INSERT("Hello,World",1,5,"no");
-- REPLACE(str,from_str,to_str) 替换字符
SELECT REPLACE("你好先生","先生","Ambition");
-- SUBSTR(str FROM pos FOR len)截取字符串
-- 第一个参数字符串 第二个参数截取的位置 第三个位置截取的终止位置
SELECT SUBSTR("世界你好",3,4);
-- SUBSTRING(str FROM pos FOR len) 截取字符串
-- 第一个参数字符串 第二个参数截取的位置 第三个参数截取的长度
SELECT SUBSTRING("世界你好",3,2);
-- LPAD(str,len,padstr)左侧填充字符
SELECT LPAD("Hello",10,"*");
-- RPAD(str,len,padstr)右侧填充字符
SELECT RPAD("Hello",10,"*");
-- TRIM([remstr FROM] str)去除首尾空格
SELECT TRIM(" 你好先生 ");
-- 电话号码加密
SELECT LPAD(SUBSTRING("13312345678",8,4),11,"*")
-- 姓名加密 在mysql中一个汉字表示三个字节
SELECT RPAD(SUBSTRING("李晓娜",1,1),LENGTH("李晓娜")/3,"*");
#SALES部门发放礼品A,其他部门发放礼品B,打印每名员工获得的礼品
SELECT
e.empno,e.ename,d.dname,
IF(d.dname="SALES","礼品A","礼品B")
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
#公司年庆决定组织员工集体旅游,每个部门旅游目的地是不同的。
SALES部门去P1地点,ACCOUNTING部门去P2地点,RESEARCH部门去P3地点,查询每名员工的旅行地点
SELECT FROM
e.empno,e.ename,
CASE
WHEN d.dname="SALES" THEN "P1"
WHEN d.dname="ACCOUNTING" THEN "P2"
WHEN d.dname="RESEARCH" THEN "P3"
END AS place
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
评论区