数据库常用函数
欢迎补充本文中没有的,本文来自b站黑马
字符串常用
CONCAT(S1,S2,…) | 字符串拼接 |
---|
LOWER(STR) | 变小写 |
UPPER(STR) | 变大写 |
LPAD(STR,N,PAD) | 填充字符串,向左填充 |
RPAD(STR,N,PAD) | 填充字符串,向右填充 |
TRIM(STR) | 去除空格 |
SUBSTRING(STR,START,LEN) | 截取字符,从start开始,截取len的长度 |
数值函数
CEIL(X) | 向上取整 |
---|
FLOOP(X) | 向下取整 |
MOD(X,Y) | 取余 |
RAND() | 获取0,1的随机数 |
ROUND(X,Y) | 求参数x的四舍五入,保留y位 |
日期函数
CURDATE() | 返回当前日期 |
---|
CURTIME() | 返回当前时间 |
NOW() | 返回当前日期和时间 |
YEAR(DATE) | 获取指定日期的年份 |
MONTH(DATE) | 获取指定日期的月份 |
DAY(DATE) | 获取指定日期的天 |
DATE_ADD(DATE,INTERVAL EXPR TYPE) | 返回从date开始推迟expr个type单位的时间值 |
DATEDIFF(DATE1,DATE2) | 返回date1与date2之间的天数 |
SELECT DATE_ADD(now(),INTERVAL 70 DAY)
SELECT DATEDIFF('2024-03-05','2024-03-20')
流程函数
IF(VALUE,TRUE,FALSE) | VALUE=TRUE,RETURN TURE ,ELSE RETURN FALSE |
---|
IFNULL(VALUE1,VALUE2) | IF(VALUE!=NULL) RETURN VALUE1,ELSE RETURN VALUE2 |
CASE WHEN [VALUE1] THEN [RESULT1] ELSE [RESULT2] END | VAL1=TRUE RETURN RESULT1,ELSE RESULT2 |
IFNULL(SUM(CASE WHEN date LIKE CONCAT(2024,'-',LPAD(12 , 2, '0') ) THEN monthFinishInvest ELSE 0 END), 0)
常用方法
1.算带有小数的除法:ROUND(SUM(x) / NULLIF(SUM(y), 0), 2) AS ratio
新学一招:GROUP_CONCAT函数,搭配group by使用,可以直接得到json串+JSON.parseArray方法解析json
SELECT
p.id,
p.project_name,
c.corporation_name,
p.area,
d.show_value AS areaName,
GROUP_CONCAT('{"month":', `month`, ',"monthPlanInvest":', COALESCE(monthly_plan, 0),
',"monthFinishInvest":',COALESCE(month_actual, 0), ',"Percent":', COALESCE(ROUND((month_actual / monthly_plan) * 100, 2), 0), '}') valueSting
FROM
project_month_invest m
<where>
<if test="true">
and m.years = #{year}
and p.is_delete = 1
</if>
<if test="area != null and area != ''">
and p.area = #{area}
</if>
<if test="projectName != null and projectName != ''">
and p.project_name like CONCAT('%', #{projectName}, '%')
</if>
<if test="corporationName != null and corporationName != ''">
and c.corporation_name like CONCAT('%', #{corporationName}, '%')
</if>
</where>
GROUP BY
m.project_id
order by m.project_id desc
limit #{currentPage,jdbcType=INTEGER}
,#{pageSize,jdbcType=INTEGER}