通常我们在业务处理的时候会在mapper下的xml文件下sql语句中去使用mysql的一些函数去简化开发。例如时间段的匹配等。
以下是常见的函数
返回字母的大小写(非字母字符不进行改变)
SELECT upper(username) FROM t_user where del_flag = 0 ; SELECT LOWER(username) FROM t_user where del_flag = 0 ;
返回字符的长度
SELECT LENGTH(real_name),real_name FROM t_user where del_flag = 0 ;
在中文输入下的每个字符都是占用三个长度(慎用)
将返回的字段中的内容进行替换返回
select replace(real_name,'员','猴') new_real_name,real_name from t_user where del_flag = 0
截取字符串
# 截取字符串,起始位置,截取的长度 返回的是截取的第二个位置之后的三个字符串,长度不够的话不会去补空格 select SUBSTR(real_name,2,3) new,real_name from t_user where del_flag = 0 # 截取名字的最后一位 select SUBSTR(real_name,(LENGTH(real_name)/3),1) new,real_name from t_user
返回ascll码
select ASCII(real_name) new,real_name from t_user
返回A字符串是否在B出现,出现返回第一次出现的位置,没有出现返回为0
select ltrim(" str ") from dual; select rtrim(" str ") from dual;
select locate("bxs","footbar") from dual;
对字符串左右进行拼接为目标长度
select lpad("he",5,"?") from dual; select rpad("he",5,"?") from dual;
返回字符串的左边/右边几位
select right(username,3),username from t_user; select left(username,3),username from t_user;
去除返回字符串的空格
select ltrim(" str ") from dual; select rtrim(" str ") from dual;
数字计算函数
# 四舍五入(可以设置保留几位小数) select round(129.556),round(-129.5534,2) from dual;
# 对返回的数字取绝对值 select abs(-20) from dual;
# 求模取余 常用来判断奇偶 select mod(10,2) from dual;
# 返回 不大于数字的最大整数 select floor("3.96") from dual; # 返回 不小于数字的最大整数 select ceiling(1.23) from dual;
# 对小数点后的位数进行截断 返回保留几位小数 select truncate(1.999,0) from dual;
在业务中会用到很多时间函数
# 获取当前时间 2024-04-10 14:55:49 select NOW() from dual; select sysdate() from dual; # orcal 使用较多 #只获取日期的 select curdate() from dual; # 2024-04-10 #只获取时间的 select curtime() from dual; # 14:58:34 # 返回指定日期是星期几(俩种不同的需要对应俩种不同的字典对应) select dayofweek('2017-03-25') from dual; # 星期日是 1 以此类推 7是星期6 select WEEKDAY(curdate()) from dual; # 0 是星期1 一次类推 6是星期日 # 返回一个月的几号 select dayofmonth("2017-03-24") from dual; # 返回一年中的第几天(包含当前天) select dayofyear("2017-03-24") from dual # 返回一年的第几月 select month("2017-03-24") from dual; # 查看当前时间是该年的第几季度 select Quarter(NOW()) from dual; # 返回当前时间是该年的第几周 select week("2017-01-10") from dual; # 返回当前年 select YEAR("2017-01-10") from dual; # 返回当前日期再过几个月后的日期 日期的格式,月数 select period_add(201712,3) from dual;
# 查询数据库的一些信息
返回当前数据库
select database() from dual;
返回当前用户
select system_user() from dual;
返回当前数据版本
select version() from dual;
最后拓展俩个函数
MD5加密
select md5("123456") from dual;格式化
select format(123456789,3) from dual;