mysql 函数
判空函数
-- 为null时,显示后面的值
SELECT IFNULL(expression, alt_value);
SELECT IFNULL(NULL,'这个值为空');
判断函数
select case
when 2 < 0 then 'a小于0'
when 2 > 0 then 'a大于0'
else 'a为0'
end ;
SELECT IF(TRUE,'真的','假的');
字符串函数
SELECT lower('SQL Course') ; -- 小写
SELECT upper('SQL Course') ; -- 大写
select CONCAT('a','b','c') ; -- 拼接,有任何参数为null,则函数返回null
SELECT CONCAT_WS(',','FirstName','xjdlf'); -- 拼接 带给定的分隔符
SELECT SUBSTRING('hello world',5,3); -- 从第5个位置起,取3个字符
SELECT SUBSTRING('hello world',-3); -- 取最后3个字符
SELECT LEFT('www.yuanrengu.com',8) -- 从左开始截取字符串 即:left(被截取字符串, 截取长度)
SELECT RIGHT('www.yuanrengu.com',6) --从右开始截取字符串 即:right(被截取字符串, 截取长度)
SELECT LENGTH('we'); -- 返回长度,2
SELECT LENGTH('你好'); -- 返回长度,6
SELECT char_length('你好'); -- 返回长度,2
日期函数
-- 当时时间
select CURDATE(); -- 日期
select now(); -- 当前时间
select SYSDATE(); -- 当前时间
CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP,LOCALTIME()、LOCALTIME、LOCALTIMESTAMP()、LOCALTIMESTAMP;
-- 格式化时间
SELECT DATE_FORMAT(NOW(),"%Y-%m-%d");
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
-- 字符串转日期
SELECT STR_TO_DATE('2019-01-20 16:01:45', '%Y-%m-%d %H:%i:%s');
-- 将时间戳格式化
SELECT FROM_UNIXTIME(unix_timestamp(),'%Y-%m-%d %H:%i:%s')
日期比较
-- 取年份 月份 日
SELECT YEAR(NOW());
year() , month(),dayofmonth();
-- 取某个月的第一天
select date_sub('2021-07-08', interval day('2021-07-08') - 1 day);
-- 取某个月的最后一天
select last_day('2021-07-08');
-- 取某个月的下个月第一天
select date_add(last_day('2021-07-08'),interval 1 day);
-- 整个月的数据
select * from test01
where date_time between date_sub('2021-07-08',interval day('2021-07-08') day )
and date_add(last_day('2021-07-08'),interval 1 day) ;
-- mysql 时间相减 得到秒数
select t.date_time2-t.date_time as time from test01 t;
-- 返回相差天数(可以为负整数)
SELECT DATEDIFF('2021-02-02 12:00:00' , '2020-09-12 13:09:23');
-- 日期加减
select date_add('1970-1-1', interval 10 year);
SELECT DATE_ADD('1991-02-12',INTERVAL 10 MONTH);
SELECT DATE_SUB('1999-01-01',INTERVAL 10 DAY) ;
SELECT DATE_ADD(NOW(),INTERVAL 12 HOUR);
SELECT DATE_ADD(NOW(),INTERVAL -10 minute);
聚合函数
count(列名) 统计记录的条数
max(列名) 求这一列中的最大值,用于数值列
min(列名) 求这一列中的最小值
avg(列名) 求这一列的平均值
sum(列名) 求这一列的总和
随机数
SELECT UUID();
数字函数
CEIL(x) 返回大于或等于 x 的最小整数
FLOOR(x) 返回小于或等于 x 的最大整数
GREATEST(expr1, expr2, expr3, ...) 返回列表中的最大值
LEAST(expr1, expr2, expr3, ...) 返回列表中的最小值
MOD(x,y) 返回 x 除以 y 以后的余数
POW(x,y) 返回 x 的 y 次方
RAND() 返回 0 到 1 的随机数
ROUND(x) x四舍五入
TRUNCATE(x,y) 返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
-- ROUND 函数用于把数值字段舍入为指定的小数位数
select round(12.00999,2); -- 12.01
格式化数字
-- 格式化浮点数(四舍五入保留length位小数)
select format(number, length);
select format(23232.0, 2); -- 23,232.00
select format(23232.123333, 2); -- 23,232.12
行拼接成一列
select group_concat(id) from answer where subject_id = 1;
select group_concat(id) from answer group by subject_id ;
FIND_IN_SET 相当于自动分割字符串
select * from dept where FIND_IN_SET(id,'1000,1001,1002');
mysql 8.0 后才支持函数索引

浙公网安备 33010602011771号