进阶

MySQL内置函数

一,含义:是指一段可以直接被另一段程序调用的程序或代码

二,分类:

  • 字符串函数 (使用时,前面加select)eg,select concat(’he’,’DE’)

    • CONCAT(S1,S2,S3):字符串拼接,将S1,S2,S3拼接成一个字符串
    • LOWER(str):将字符串str全部转化为小写
    • UPPER(str) : 将字符串str全部转化为大写
    • LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
    • RPAD (str,n,pad) :右填充,用字符串pad对str的右边进行填充,达到n个字符串的长度
    • TPIM(str):去掉字符串头部和尾部的空格
    • SUBSTRING(str,start,len):返回从字符串str从start位置起的len个长度的字符串
    • 例如,如果要单个工号前面添加0000,就使用update 表名 set workno = lpad(workno,5,’0’)
  • 数值函数

    • CEIL(x):向上取整
    • FLOOR(x):向下取整
    • MOD (x,y): 返回x/y的模
    • RAND():返回0-1内的随机数
    • ROUND(x,y):求x四舍五入的值,暴露y位小数
    • 例如随机生成一个6位数的验证码,select lpad(round(rand()1000000,0),6,’0’),首先进行生成0-1的随机数,然后乘以1000000就变成了一个六位数带有小数的数,在用round()四舍五入消除小数,注意,如果是0.0123451000000就会只有5位数,所以我们要进行填充,使用lpad或者rpad都可以
  • 日期函数

    • CURDATE():返回当前日期
    • CURTIME(): 返回当前时间
    • NOW(): 返回当前日期和时间
    • YEAR(date):获取指定date的年份
    • MONTH(date): 获取指定date的月份
    • DAY(date):获取指定date的日期
    • DATE_ADD(date,INTERVAL expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值
    • DATEDIFF(date1,date2):返回起始时间date1,和结束时间date2之间的天数
    • 例如,从当前日期往后推70天,select date_add(now(),INTERVAL 70 DAY);查询员工入职的天数并降序排序,select name datediff(curdate(),entrydate) as ‘entrydays’ from 表 order by entrydays desc;使用datediff函数,为了方便排序,用as 给计算的天数起个别名,方便order by 使用