1. 数学函数
函数 | 作用 | 例 |
---|---|---|
abs(x) | 绝对值 | abs(-0.5)=0.5 |
ceil(x),ceiling(x) | 大于或等于x的最小整 数 | ceil(0.5)=1,ceiling(-0.5)=0 |
floor(x) | 小于或等于x的最大整数 | floor(0.5)=0,floor(-0.5)=-1 |
rand() | 0-1的随机数 | |
rand(x) | 0-1的随机数,x值相同时返回的随机数相同 | |
sign(x) | x的符号(-1,0,1) | sign(-0.5)=- 1,sign(0)=0,sign(0.5)=1 |
pi() | 圆周率(3.141593) | pi()=3.141593 |
truncate(x,y) | x保留到小数点后y位的值 | truncate(2.55,1)=2.5 |
round(x) | 离x最近的整数 | round(2.5)=3,round(2.2)=2 |
round(x,y) | x小数点后y位的值,(四舍五入后) | round(2.55,1)=2.6 |
pow(x,y),power(x,y) | x的y次方 | power(3,2)=pow(3,2)=9 |
sqrt(x) | x的平方根 | sqrt(16)=4 |
exp(x) | e的x次方 | exp(2)=7.38905609893065 |
mod(x,y) | x除以y以后的余数 | mod(5,2)=1 |
log(x) | 自然对数(以e为底) | log(7.38905609893065)=2 |
log10(x) | 以10为底的对数 | log10(100)=2 |
radians(x) | 角度转换为弧度 | radians(180)=3.141592653589793 |
degrees(x) | 弧度转换为角度 | degrees(pi())=180 |
sin(x) | 正弦值 | sin(pi()/2)=1 |
asin(x) | 反正弦值 | asin(1)=1.5707963267948966 |
cos(x) | 余弦值 | cos(0)=1 |
acos(x) | 反余弦值 | acos(1)=0 |
tan(x) | 正切值 | tan(pi()/4)=0.9999999999999999 |
atan(x),atan2(x,y) | 反正切值 | atan(1)=atan2(1)=0.7853981633974483 |
cot(x) | 余切值 | cot(1)=0.6420926159343306 |
2.字符串函数
合并字符串函数 concat_ws(x,s1,s2,...)
!! 各字符串用参数 x 隔开
填充字符串函数 lpad(s1,len,s2) , rpad(s1,len,s2)
!! lpad(s1,len,s2)函数把字符串 s2 填充到 s1 的开始处,使字符串长度达到 len;
!! rpad(s1,len,s2)函数把字符串 s2 填充到 s1 的结尾处,使字符串长度达到 len;
3.日期和时间函数
3.1获取当前日期:curdate(),current_date()
获取当前时间:curtime(),current_time()
获取当前日期和时间:now(),current_timestamp(),localtime(),sysdate(),localtimestamp()
3.2unix时间戳函数
以unix时间戳形式返回当前时间:unix_timestamp()
将时间 d 以unix时间戳形式返回:unix_timestamp(d)
把unix时间戳的时间转换为普通格式的时间:from_unixtime(d)
3.3返回utc日期:utc_date()
返回utc时间:utc_time() !! utc:Universal Coordinated Time,国际协调时间
3.4获取月份:month(d),monthname(d)
3.5获取星期:dayname(d) :Monday,...
dayofweek(d) :1(周日),...
weekday(d) :0(周一),...
3.6获取星期数:week(d),weekofyear(d) :d是本年第几周
3.7获取天数:dayofyear(d) :本年第几天
dayofmonth(d) :本月第几天
3.8返回日期d中年份值:year(d)
返回日期d是本年第几季度:quarter(d)
返回时间t中小时值:hour(t)
返回时间t中分钟值:minute(t)
3.9返回日期的指定值:extract(type from d)
type:: year :年份
month:月份
day:几号
hour:小时
minute:分钟
second:秒
3.10时间和秒钟转换
time_to_sec(t)
sec_to_time(s)
3.11计算日期和时间
(1) to_days(d) :日期d与0000年1月1日的天数
from_days(n):从0000年1月1日开始 n 天后日期
datediff(d1,d2):日期d1和d2之间相隔的天数
(2) adddate(d,n) :起始日期 d 加上 n 天的日期
subdate(d,n) :起始日期 d 减去 n 天的日期
addtime(t,n) :起始时间 t 加上 n 秒的时间
subtime(t,n) :起始时间 t 减去 n 秒的时间
(3) adddate(d,interval expr type),date_add(d,interval expr type):起始日期d加上一个时间段后日期
subdate(d,interval expr type) :起始日期d减去一个时间段后日期
type | 含义 | expr形式(时间段长度) |
---|---|---|
year | 年 | yy |
month | 月 | mm |
day | 日 | dd |
hour | 时 | hh |
minute | 分 | mm |
second | 秒 | ss |
year_month | 年-月 | yy与mm间用任意符号隔开 |
day_hour | 日-时 | dd与hh间用任意符号隔开 |
day_minute | 日-分 | dd与mm间用任意符号隔开 |
day_second | 日-秒 | dd与ss间用任意符号隔开 |
hour_minute | 时-分 | hh与mm间用任意符号隔开 |
hour_second | 时-秒 | hh与ss间用任意符号隔开 |
minute_second | 分-秒 | mm与ss间用任意符号隔开 |
3.12将日期和时间格式化
date_format(d,f):按f格式要求显示日期d
time_format(t,f):按f格式要求显示时间t
get_format(type,s):根据字符串s获取type类型数据的显示格式
!! date_format(d,get_format(type,s))
4.条件判断函数
4.1 if(expr,v1,v2) :expr成立,返回v1,否则返回v2
例:select grade,if(grade>=60,'pass','fail') from student
4.2 ifnull(v1,v2) :若v1不为空,显示v1值,否则显示v2值
例:select grade,ifnull(grade,‘no grade') from student
4.3 case函数
4.3.1 case when expr1 then v1
[when expr2 then v2 ...]
[else vn]
end 字段
4.3.2 case expr
when e1 then v1
[when e2 then v2 ...]
[else vn]
end 字段
5.系统信息函数
函数 | 作用 |
---|---|
version() | 数据库版本号 |
connection_id() | 服务器连接数 |
datebase(),schema() | 当前数据库名 |
user(),system_user(),session_user() | 当前用户 |
current_user(),current_user | 当前用户 |
charset(str) | 字符串str的字符集 |
collation(str) | 字符串str的字符排列方式 |
last_insert_id() | 最近生成的auto_increment值 |
6.加密函数
6.1 password(str) :主要用来给用户的密码加密,此加密不可逆。
!! 不能将未加密的密码直接存储到Mysql的user表中
6.2 md5(str) :主要用于对普通的数据加密
6.3 encode(str,pswd_str) :使用字符串pswd_str来加密字符串str.加密的结果是一个二进制数,必须使用blob类型的 字段来保存
6.4 decode(crypt_str,pswd_str) :使用字符串pswd_str来为crypt_str解密。
例:
7.其他函数
7.1 format(x,n) :将数字x进行格式化,将x保留到小数点后n位(四舍五入)<=>round(x,y)
7.2 ascII(s) :返回字符串s的第一个字符的ASCII码
bin(x) :返回x的二进制编码
hex(x) :x的十六进制编码
oct(x) :x的八进制编码
conv(x,f1,f2) :将x从f1进制数变成f2进制数
7.3 inet_aton(ip) :将ip地址转换为数字表示
inet_ntoa(n) :将数字n转换成ip形式
7.4 get_lock(name,time) :定义一个名称为nam、持续时间长度为time秒的锁
release_lock(name) :解除名称为name的锁
is_free_lock(name) :是否使用名称为name的锁
7.5 benchmark(count,expr) :将表达式expr重复执行count次,然后返回执行时间
7.6 convert(s using cs) :将字符串s的字符集变成cs
7.7 cast(x as type)和convert(x,type) :将x变成type类型