三:函数


函数
  1.单行函数
    常用函数:
      concat
      length 获取字节长度,在utf8中中文字节长度为3英文字母为1
      ifnull
      upper 全变大写
      lower 全变小写
      substr 截取字符串 索引从1开始,截取从在指定字符长度的字符
      instr 返回子串第一次出现的索引,如果找不到返回0
      trim 去掉前后的字符(默认空格)例如 SELECT TRIM('a' FROM 'aaaaaaaa刘aaaa德华aaaaaa');
      lpad 用指定的字符来做左填充并且指定长度
      rpad 用指定的字符来做右填充并且指定长度
      replace替换字符串中所有的

    数学函数:
      round 四舍五入
      ceil 向上取整:返回>=该参数的最小整数
      floor 向下取整:返回<=该参数的最大整数
      truncate截断
      mod 取余被除数为正就是正,为负就是负。 mod(a,b) = a-a/b*b
    日期函数

      SELECT DATEDIFF('1998-10-18' , '2020-12-14'); 时间的差值
      select now(): 返回当前系统日期加上时间
      select curdate(); 返回当前系统日期,不包含时间
      select time(); 返回当前时间不包含日期
      可以获取指定的不封,年月日,小时,分钟,秒 select year(now());
      select str_to_date('1998-2-3', '%Y-%c-%d'): 将日期格式的字符转换成指定格式的日期
        例如:select * from employees where hiredate = str_to_date('4-3 1992', '%c-%d %Y'); 由于有时需要用户输入字符串的数据,而且还不可能按照一定的格式,所以就可以使用这种方式
      select dateformat(now(), '%y年/%m月/%d日') :将日期转换成字符

    流程控制函数
      select if(10<5, '大', '小');
      case 要判断的字段或者表达式, when 常量1 then 要显示的值1或者语句1;

      # case函数的使用一:switch case的效果

      # case 要判断的字段或者表达式,
      # when 常量1 then 要显示的值1或者语句1;
      # when 常量2 then 要显示的值2或者语句2;
      # else 要显示的语句n
      # end
      SELECT gender,`first_name`,
      CASE first_name
      WHEN 'jone' THEN "man"
      ELSE "girl"
      END AS testCase
      FROM `employees`;
      # case函数的使用二: 类似于java中的多重if
      # case
      # when 条件1 then 要显示的值1
      # when 条件2 then 要显示的值2
      # else 要显示的值n
      # end

      # 案例 如果工资<200 显示A级别,如果<1500 显示B级别

  2.分组函数

    1.功能:用作统计使用,又称聚合函数或统计函数或组函数

    2.分类:

      sum 求和,avg 平均值,max最大值,min最小值,count 计算个数

# 1.语法
SELECT SUM(salary) AS 求和 FROM `salaries`;
SELECT AVG(salary) AS 平均值 FROM `salaries`;
SELECT MIN(salary) AS 最小值 FROM `salaries`;
SELECT MAX(salary) AS 最大值 FROM `salaries`;
SELECT COUNT(salary) AS 总个数 FROM `salaries`;
SELECT SUM(salary) AS 求和,AVG(salary) AS 平均值,MIN(salary) AS 最小值 FROM `salaries`;
使用方式

    3.参数支持那些类型:

      sum 和 avg 只支持数值型(null不参与运算)

      max 和min 由于,字符型也是可以排序的,所以支持字符型,当然日期型也是可以的(null会被忽略)

      count 计数是计算非空值的个数。

    4.和distinct搭配使用

      SELECT SUM(DISTINCT salary) AS 求和 FROM `salaries`;

    5. count 函数详细介绍

      select count(*) from employees; 统计总共有多少行

      select count(1) from employees; 相当于加了一列1然后统计有多少1

      效率: myisam  存储引擎下, count (*) 小率高

         INNOB  都一样

      select count(*) from employees where salary>5000;   # 和 where筛选一起用

    

原文地址:https://www.cnblogs.com/BookMiki/p/14135581.html