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

四、流程控制类
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加密模式