MySQL——常用函数

单行函数

例:concat,length等,最后会有一个返回值。

字符函数

  1. length:获取参数字节个数(utf-8为一字节,CJK为3字节)
  2. concat:拼接字符串
  3. upper、lower:大写字母,小写字母
  4. substr、substring:提取对应索引的子字符串
SELECT SUBSTR('阿珍爱上了阿强',6);
#一个参数截取指定索引处后面所有字符
SELECT SUBSTR('阿珍爱上了阿强',3,3);
#两个参数截取指定索引处指定长度字符
  1. left、right:从左、从右开始截取子字符串(left(str, length))
  2. instr:返回子串第一次出现的索引,如果找不到返回0。instr(字符串,子串)
  3. trim:可以删去字符串中的空格,或其它指定字符
SELECT TRIM('    cigar    ') AS out_put;
SELECT TRIM('k' FROM 'kkkkkkkkkcigarkkkkkkkk') AS out_put;
  1. lpad:用指定字符左填充指定长度
SELECT LPAD('cigar',8,'*') AS out_put;
#最后输出为:***cigar
  1. rpad:类似实现右填充
  2. replace:用指定子串替换指定子串
SELECT REPLACE('周芷若周芷若周芷若张无忌爱上周芷若周芷若','周芷若','赵敏') AS out_put;
#输出:赵敏赵敏赵敏张无忌爱上赵敏赵敏

数学函数

  1. round:四舍五入,round(对象,小数点后保留位数),默认保留位数为0
  2. ceil:向上取整
  3. floor:向下取整
  4. truncate:截断,和round一样也有两个参数,后一个是小数点后保留位数
  5. mod:取余(取模),和%用法一致

日期函数

参数类型为日期类型,用于处理日期

  1. now:返回当前系统日期+时间
  2. curdate:返回当前系统日期
  3. curtime:返回当前系统时间
  4. year, month, day, hour, minute, second:返回指定的年,月,日,小时,分钟,秒
  5. str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('9-13-1999', '%m-%d-%Y');
#输出:1999-09-13
  1. datediff:用于计算日期的差值(date1-date2)
    DATEDIFF(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])
    其中timeinterval 表示相隔时间的类型,代码为:年份 yy、yyyy;季度 qq、q;月份 mm、m;每年的某一日 dy、y;日期 dd、d;星期 wk、ww;工作日 dw;小时 hh;分钟 mi、n;秒 ss、s;毫秒 ms。

  2. timediff:用于计算时间的差值(time1-time2)
    最后返回一个时间格式的结果00:00:00

  3. timestampdiff(interval, stamp1, stamp2)——最实用!
    返回(stamp2-stamp1)的时间差,结果单位由interval参数给出,如下:
    在这里插入图片描述

  4. date_format:将日期转换为字符

SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
#输出:22年02月11日

在这里插入图片描述

其它函数

  1. version:查看当前版本
  2. database:查看当前数据库
  3. user:查看当前用户

流程控制函数

  1. if函数
IF(判断条件, exp1, exp2)
#exp1为成立时返回的值,exp2为不成立时返回
  1. case函数
    case函数有两种用法:

第一种用法

#case用法一(比较适合于等于判断):
case 要判断的字段或表达式
when 常量1 then 要显示的值1 或 语句1;
when 常量2 then 要显示的值2 或 语句2;
......
else 要显示的值n或语句n;
end

注:

  • case本身既可以用作表达式,也可以单独作为语句
  • 表达式时then后面不可接语句
  • then后面是值时不要加分号

例子:查询员工工资要求:部门号为30,40,50的员工工资分别为1.1,1.2,1.3倍,其他人不变。

#case作为表达式
SELECT department_id,salary,
       CASE department_id
         WHEN 30 THEN salary*1.1
         WHEN 40 THEN salary*1.2
         WHEN 50 THEN salary*1.3
         ELSE salary
         END AS 工资
FROM employees;

第二种用法:适合区间判断

#case用法二
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
......
else 要显示的值n或语句n
end

分组函数

用作统计,传入一组数后经过处理返回一个值,又称统计函数。
分类:sum, avg, max, min, count

  • count,max和min支持日期和字符作为参数
  • sum,avg,max,min,count在运算时均忽略null值
  • 和distinct搭配使用,如:select sum(distinct(salary));

count函数

  1. count(*)用于统计行数(用得多)
  2. count(1)也同样可以统计行数,1可以是任何其它字符或数字
  3. 和分组函数一同查询的字段要求是group by后的字段
SELECT AVG(salary),employee_id FROM employees;
#两个长度不一致会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值