1、数学函数
1)单行函数可以嵌套
例如:select truncate(round(123.456,2),0) from dual;//结果:123
2)三角函数
举例:
ATAN2(M,N)函数返回两个参数的反正切值。 与ATAN(X)函数相比,ATAN2(M,N)需要两个参数,例如有两个点point(x1,y1)和point(x2,y2),使用ATAN(X)函数计算反正切值为ATAN((y2-y1)/(x2-x1)),使用ATAN2(M,N)计算反正切值则为ATAN2(y2-y1,x2-x1)。由使用方式可以看出,当x2-x1等于0时,ATAN(X)函数会报错,而ATAN2(M,N)函数则仍然可以计算。
2、角度与弧度互换函数
3、指数和对数
4、进制之间的转换
例如:select bin(10),hex(10),oct(10),conv(10,2,8) from dual;//结果:1010,a,12,2
5、字符串函数
注意:MySQL中,字符串的位置是从1开始的。
6、时间日期函数
7、日期与时间戳的转换
8、获取月份、星期、星期数、天数等函数
9、日期的操作函数
EXTRACT(type FROM date)函数中type的取值与含义:
10、时间和秒钟的转换
11、计算日期和时间的函数
1)第一组
上述函数中type的取值:
2)第二组
12、日期的格式化与解析
上述非GET_FORMAT函数中fmt参数常用的格式符:
格式符 说明 格式符 说明
格式化
举例:select date_format(curtime(),‘%Y-%M-D’) from dual;
//curtime()获取当前时间年月日,以%Y-%M-%D的格式返回
解析:格式化的逆过程
举例:select str_to_date('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%s %W %w') from dual;
//结果:2021-10-25 11:37:30
GET_FORMAT函数中date_type和format_type参数取值如下:
日期类型 格式化类型 返回的格式字符串
DATE USA %m.%d.%Y
Select get_format(date,'usa') from dual;//结果:%m.%d.%Y
13、流程控制函数
1)If(value,value1,value2)
Select if(1>0,'正确','错误') from dual//结果:正确
例如:Select last_name,salary,if(salary>=6000,'高工资','低工资') “details” from employees;
2)Case when….then….when….then….else…end类似Java中的if…else if…lese
例如:Select last_name,salary,case when salary>=15000 then '白骨精' when salary>=10000 then '潜力股' else salary end “details” from employees;
3)Case expr when…then…when…then…else…end类似于Java中switch…case
例如:select last_name,department_id,salary,case department_id when 10 then salary*1.1 when 20 then salary*1.2 when 30 then salary*1.3 end “details” from employees where department_id in(10,20,30);
14、加密与解密函数
1)Password(str)在MySQL8.0中不可用。加密结果不可逆
Select password('mysql') from dual;
2)MD5不可逆加密
Select MD5('mysql') from dual;
3)Sha(str)比MD5(str)加密更安全,且是不可逆加密
Select sha('mysql') from dual;
4)Encode (value,password_seed)和decode(value,password_seed)在MySQL8.0中不可用, Encode (value,password_seed)加密结果可逆; decode(value,password_seed)解密encode加密的密码。
例如:select encode('atguigu','mysql'),decode(encode('atguigu','mysql'),'mysql') from dual;
15、MySQL信息函数
Select version(),connection_id(),database() from dual;
16、其他函数
Select format(123.123,2),conv(16,10,2) from dual;//结果:123.12,10000
1)inet_aton()对ip地址类似于加密处理,inet_ntoa()对IP地址类似于解密
select inet_aton('192.168.1.100') ,inet_ntoa(3232235876)from dual;//结果:3232235876
转换的规则:以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上
100
2)benchmark(n,expr)用于测试表达式的执行效率
select benchmark(10000,md5('mysql')) from dual;
3)convert(value using char_code)实现字符集的转换
select charset('atguigu'),convert('atguigu' using 'utf8mb4') from dual;