一字符串函数
函数 | 功能 |
concat(str1,str2,str3)/concat_ws(sep,str1,str2) | 合并字符串/用分隔符合并字 符串 |
insert(str,x,y,instri) | 将字符串str从x位开始,y个字符长的字串替换为字符串instr |
lower(str)/upper(str) | 将字符串变小写/大写 |
left(str,x)/right(str,x)/ | 返回左/右边x个字符 |
lpad(str,n,pad)/rpad(str,n,pad) | 使用字符串pad对str最左/右边进行填充,直到长度为n |
ltrim(str)/rtrim(str)/strim(str) | 去掉左/右/左右边的空格 |
repeat(str,x) | 返回字符串str重复出现x的结果 |
replace(str,a,b) | b替换str中所以的a |
strcmp(str1,str2) | 比较, |
substring(str,x,y) | 返回字符串str中从x位置其y个字符长度的字符串 |
locate/position(str1,in,str2)/instr | 获取匹配字符串的位置 |
make_set(num,str1,str2..) | 将num转换成二进制,按照二进制从参数中选取相应的字符串 |
mid/substring(str,num,len) | |
elt(n,str1,str2) | 返回指定位置的字符串 |
field(str,str1,str2) | 返回第一个与字符串获相匹配字符串的位置 |
select concat('my','s','ql',null), null
concat_ws(null,'my','s','ql'), null
concat_ws('-,'my','sql'), my-sql
strcmp('abc','abk'), -1(大于返回1,小于返回-1,等于返回2)
length('mysql'), 5
length('你好啊'), 6 汉字占两个字节
ucase('mysql), MYSQL
lcase('JKi'), jki
find_in_set('mysql','oracle,sql,mysql'), 3
field('mysql','oracle','sql','mysql'), 3
locate('sql','mysql'), 3
position('sql' in 'mysql'), 3
instr('sql','mysql'), 3
elt(2,'sql','mysql'), mysql返回指定位置的字符串
make_set(5,'sql','mysql','oracle','SQL'), sql,oracle 将数字换成二进制,选取相应字符串
substring('oraclemysql',7,5), mysql
mid('oraclemysql',7,5), mysql
char_length(concat('-',ltrim(' mysql '),'-')), 8
insert('helloitsme',6,3,'not'), hellonotme
二数值函数
函数 | 功能 |
abs(x) | 绝对值 |
ceil(x) | 大于x的最大整数 |
floor(x) | 小于x的最大整数 |
mod(x) |
x模y的值 |
rand(x) | 0-1随机数 |
round(x,y) | x四舍五入有y位小数的数值 |
truncate(x,y) | 返回x截断有y位小数的数值 |
select rand(3), 可获取相同的随机数
ceil(4.3), 5
floor(-2.5), -3
truncate(89.0970,2), 89.09
truncate(89.0970,-1), 89
round(803.0970,-1), 800
round(-803.5970), -804
三使用日期和时间函数
函数 | 功能 |
curdate()/curtime() | 获取当前日期/获取当前时间 |
now()/current_timestamp()/localtime()/sysdate() | 获取当前的日期和时间 |
unix_timestamp(date) | 获取日期date的Unix时间戳 |
from_unixtime() | 获取Unix时间戳的日期 |
week(date)/year(date)/hour(time) minute(time)/monthname(date) | 返回date一年中的第几周/日期date/月份 |
datediff() | 两个日期间隔天数 |
adddate(date,n)/subdate(date,n) | date加上/减去n天的日期 |
adddate(d,interval expr type) |
select unix_timestamp(now()), 5678990 1970/1/1
from_unixtime(unix_timestamp(now())), 2019-07-04 22:26:59
utc_time(), 14:26:59 8个时区
dayname(now()), friday
weekofyear(now()), 18
extract(year from now()), 2019
to_days(now()), 56789 0000年1月1日
from_days(to_days(now())), 2019-07-04
datediff(now(),'2017-09-07'), 654
adddate(curdate(),5),
subdate(curdate(),interval '2,3' year_month);
四使用系统函数
函数 | 作用 |
version() | 返回数据库的版本号 |
database() | 当前数据库名 |
user() | 当前用户 |
last_insert_id() | 最近生成auto_increment值 |
五流程函数
函数 | 作用 |
If(value, t f) | value为真返回t,否则返回f |
ifnull(value1,value2) | value1不为空返回value1,否则返回value2 |
case when [value1] then [result1] else [default] end | 如果value1为真,返回result1,否则返回default |
case [expr] when [value1] then [result1] else [default] end | 如果expr等于value1,返回result1,否则返回default |
六实现特殊功能的函数
函数 | 作用 |
password(str) | str加密 |
format(x,n) | x进行格式化,保留n位小数 |
inet_aton(ip) | ip转换成数字 |
inet_ntoa(x) | 数字转换成ip |
get_loct(name,time) | 创建一个持续时间为time的名为name的锁 |
release_loct(name) | 为名为name的锁进行解锁 |
benchmark(count,expr) | 将表达式重复执行count次 |
convert(s using cs) | s的字符集变成cs |
convert(x,type) | x变成type类型 |