mysql自带函数

这篇博客详细介绍了SQL中数值型、字符型和日期型函数的使用,包括绝对值、二次方根、求余数、四舍五入等数值运算,字符串拼接、替换、截取等字符串操作,以及日期添加、减去、格式化等日期处理。同时,还涵盖了逻辑判断和递归查询的示例,是理解SQL函数和操作的重要参考资料。
摘要由CSDN通过智能技术生成

数值型

select abs(-2) -- 绝对值
select sqrt(2) -- 二次方根
select mod(10, 3) -- 求余数
select ceil(3.3), ceiling(-3.3) -- 向上取整
select floor(3.3) -- 向下取整
select rand(), rand(1) -- 生成0-1随机数,传入参数返回相同随机数
select round(3.3), round(3.6) -- 四舍五入
select sign(-3), sign(0), sign(3) -- 返回符号:-1 0 1
select pow(2, 2), power(2, 2) -- 开方
select sin(1), asin(1), cos(1), acos(1), tan(1), atan(1), cot(1) -- 三角函数:正弦,反正弦,余弦,反余弦,正切,反正切,余切值

字符型

select length(1234), length('1234') -- 长度
select concat(3, 4, 5), concat('a', 'b', 'c'), concat_ws('_','a','b')-- 字符串拼接
select insert('xiaoming', 1, 4, 'da'), insert('xiaoming', 5, 5, 'hong') -- 替换:第二个参数为起始位置,从1开始,在字符串外的默认返回原字符串,第三个参数为长度
select lower('ABCD'), upper('abcd') -- 大小写转换
select left('abcd', 1), left('abcd', 0), left('abcd', 12) -- 从左截取字符串
select right('abcd', 1), right('abcd', 0), right('abcd', 12) -- 从右截取字符串
select trim('            abcd') -- 去除左右空格
select replace('aabcd', 'a', 'e') -- 字符串替换
select substring('abcd', 1), substring('abcd', 1, 2) ,substring('abcd', -2) -- 字符串截取:第二个参数为起始位置,从1开始,第三个参数为长度
select substr('abcd', 1), substr('abcd', 1, 2) ,substr('abcd', -2) -- 同上
select reverse('abcd'), reverse(1234) -- 字符串翻转

日期型

select curdate(), current_date() -- 返回年月日:2021-04-06
select curtime(), current_time() -- 返回时分秒:10:28:40
select now(), sysdate() -- 返回年月日时分秒:2021-04-06 10:28:45
select unix_timestamp() -- 时间戳
select from_unixtime(unix_timestamp()) -- 反时间戳:返回年月日时分秒
select month(now()), month(curdate()), month('2021-04-06') -- 返回月份
select monthname(now()), monthname(curdate()), monthname('2021-04-06') -- 返回月份英文
select dayname(now()), dayname(curdate()), dayname('2021-04-06') -- 返回星期英文
select dayofweek(now()), dayofweek(curdate()), dayofweek('2021-04-11') -- 返回星期几,星期天为1
select week(now()), week(curdate()), week('2021-04-06') -- 返回一年中的第几周
select dayofyear(now()), dayofyear(curdate()), dayofyear('2021-04-06') -- 返回一年中的第几天
select dayofmonth(now()), dayofmonth(curdate()), dayofmonth('2021-04-06') -- 返回当月中的第几天,号数
select year(now()), year(curdate()), year('2021-04-06') -- 返回年份
select time_to_sec('01:01:10') -- 时间转秒
select sec_to_time(3670), sec_to_time(time_to_sec('01:01:10')) -- 秒数转时间
select date_add('2021-04-06', interval 1 second), date_add('2021-04-06', interval '1:0' minute_second), adddate('2021-04-06', interval '1:0' HOUR_MINUTE) , adddate('2021-04-06', interval 1 day) -- 日期加一秒、一分、一小时、一天
select date_sub('2021-04-06', interval 1 second), date_sub('2021-04-06', interval '1:0' minute_second), subdate('2021-04-06', interval '1:0' HOUR_MINUTE) , subdate('2021-04-06', interval 1 day) -- 日期减一秒、一分、一小时、一天
select addtime('2021-04-06 00:00:00', '24:00:00') -- 日期加一天
select subtime('2021-04-06 00:00:00', '24:00:00') -- 日期减一天
select datediff('2021-04-06', '2021-04-07'),  datediff('2021-04-06', '2020-04-06'),  datediff('2021-04-06 00:00:00', '2020-04-06 12:00:00')  -- 日期相减返回天数
select date_format(now(), '%Y-%m-%d'), date_format(now(), '%Y-%m-%d %k:%i:%s'), date_format(now(), '%Y-%m-%d %H:%m:%s') -- 格式化日期:年月日、年月日时分秒
select weekday(now()) -- 返回周几,0表示周一,1表示周二

逻辑型

select if(1>2, 1, 2), case when 1>2 then 1 else 2 end  -- 流程语句判断
select ifnull(null, 2), ifnull(1, 2) -- 非空判断

递归查询函数样例:

主要通过find_in_set函数

查询父节点下所有子节点

delimiter$$
drop function if exists getChildrens$$
create function getChildrens(rootId varchar(50)) RETURNS varchar(1000)
begin
    declare ids varchar(1000) default '';
    declare tempId varchar(1000) ;
    
    set tempId = rootId;
    while tempId is not null do
        set ids = concat_ws(',', ids, tempId);
        select group_concat(area_code) into tempId from mxk_area where find_in_set(parent_area_code, tempId) > 0;
    end while;
    return ids;

end $$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值