• 分类
    • 单行函数
    • 分组函数
  • 功能分类
    • 字符函数
    • 数学函数
    • 日期函数
    • 流程控制函数
    • 其他函数

一、字符函数

  1. 1length('join')、length("张三丰hahah")、length(fild) -- 返回字节长度,中文一般占用3个字节
  2. char_length('张三丰ahahah') -- 返回字符串长度
  3. 2concat(name,'-',sex) -- 连接函数,把字符串连接在一起
  4. 3upper(field)、lower(field) -- 转换大小写函数
  5. 4substr(field,index) -- 截取字符串,index1开始算起,截取到最后
  6. substr(field,index,length) -- 截取字符串,index1开始算起,截取字符长度固定为length的字符串
  7. 5instr(field,str) -- 返回strfield第一次出现的索引位置,如果找不到返回0
  8. 6trim(field) -- 去除前后空格
  9. trim('a' FROM 'aaa张三aaaaaa五五aaaaa') -- 去除前后指定的字符,此处结果为 ‘张三aaaaaa五五’
  10. ltrim(field) -- 去除左边空格
  11. rtrim(field) -- 去除右边空格
  12. 7lpad(field,length,str) -- 左填充指定长度的字符串str,最多保留长度为length的字符串,如果field的长度大于length,则截取
  13. rpad(field,length,str) -- 右填充指定长度的字符串str
  14. 8replace(field,str1,str2) -- 替换,把field里面str1的字符串替换成str2
  15. 9repeat(str,count) -- 将字符str重复count次返回
  16. 10reverse(str) -- 将字符串反转返回

二、数学类

1、ROUND(1.65) -- 四舍五入,结果为2
   ROUND(-1.55) -- 四舍五入,结果为-2
   ROUND(1.567,2) -- 四舍五入,保留2位小数,结果为1.67

2、CELL(1.2) -- 向上取整,返回大于或等于该参数最小整数,结果为2

3、FLOOR(1.2) -- 向下取整,返回小于或等于该参数最小整数,结果为1

4、TRUNCATE(1.567,1) -- 截取数字,保留小数点后1位,结果为:1.5

5、MOD(10,3) -- 求余数,相当于 10%3=1 , 结果为1

6、BIN(X) -- 返回X的二进制

ABS(X) :绝对值函数
PI() :数π的值
SQRT(X):开平方函数 x<0 return null
RAND():获取随机数 0~1
符号函数函数 SIGN(X) :返回正(1),负(-1),0
幂运算函数 POW(x,y) reurn x^y
   POWER(x,y) return  x^y
   EXP(x,y) return e^y
对数函数 LOG(x) 自然对数
   LOG10(x) return log10x
角度函数 角度——》弧度 RADIANS(x)
   弧度--》角度 DEGREES(x)
正弦函数 SIN(x) x为弧度
反正弦函数 ASIN(x) -1<x<1 else return null
余弦函数 COS(x)
反余弦函数 ACOS(x)
正切函数 TAN(x)
反正切函数 ATAN(x)
余切函数 CRAN(x)

三、日期类

1、NOW() -- 返回日期+时间:2021-09-09 12:09:15
     now()函数的同义词有:CURRENT_TIMESTAMP、
                                             CURRENT_TIMESTAMP()、
                                             LOCALTIMESTAMP、
                       LOCALTIMESTAMP()、LOCALTIME 、 LOCALTIME()
   CURTIME([fsp]):返回当前时间,只包含时分秒(fsp指定小数秒的精度,取值0--6)

2、SYSDATE( ):返回服务器的当前日期和时间
   与now的不同点:(一般使用NOW而不用SYSDATE)
  ①SYSDATE()返回的是函数执行时的时间
  ②now()返回的是语句执行时的时间

3、CURDATE() -- 返回当前日期

4、CURTIME() -- 返回当前时间

5、YEAR(NOW())、MONTH(NOW())。。。 -- 获取年、月等函数

6、STR_TO_DATE('dateStr','%m-%d-%Y') -- 字符串转日期类型

7、DATE_FORMAT(date,'formatStr') -- 日期转字符

8、TIMEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的时间数(两个参数类型必须相同)
   select timediff('18:32:59','60000'); -- 结果12:32:59

9、DATEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的天数
   select datediff('2019-01-14 14:32:59','2019-01-02'); --结果12

10、日期时间运算函数:分别为给定的日期date加上(add)或减去(sub)一个时间间隔值expr
格式:
  DATE_ADD(date, INTERVAL  expr  unit);
  DATE_SUB(date, INTERVAL  expr  unit);
interval是间隔类型关键字
expr是一个表达式,对应后面的类型
unit是时间间隔的单位(间隔类型)(20个),如下:
    HOUR:小时
    MINUTE:分
    SECOND:秒
    MICROSECOND:毫秒
    YEAR:年
    MONTH:月
    DAY:日
    WEEK:周
    QUARTER:季
    YEAR_MONTH:年和月
    DAY_HOUR:日和小时
    DAY_MINUTE:日和分钟
    DAY_ SECOND:日和秒
    HOUR_MINUTE:小时和分
    HOUR_SECOND:小时和秒
    MINUTE_SECOND:分钟和秒
例子:
    SELECT date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND);  #减1天1小时1分1秒 -- 结果:2019-01-01 22:58:59 
  select now(),date_add(now(),interval 1 day);  #加一天 -- 结果 2019-01-15 14:53:08   

11、个性化显示时间日期 -- 分别返回日期在一周、一月、一年中是第几天
  dayofweek(date)
  dayofmonth(date)
  dayofyear(date)

image.png

四、流程控制类

1、if函数:三元运算符
SELECT IF(expr1,expr2,expr3)条件1;成立返回2;不成立返回3

2、case函数 不改变原来数据库的值
  SELECT
  salary AS 原始工资,
  department_id,
  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;
-------------------------------------- 和如下写法效果一致
  SELECT
  salary AS 原始工资,
  department_id,
  CASE
  WHEN department_id=30 THEN salary * 1.1
  WHEN department_id=40 THEN salary * 1.2
  WHEN department_id=50 THEN salary * 1.3
  ELSE salary
  END AS 新工资
  FROM
  employees;

五、其他函数

1、password('密码') -- 返回密码加密形式
2、uuid() -- 生成一个uuid数
3、md5('字符串') -- 返回字符串的md5加密模式