一字符串函数
| 函数 | 功能 |
| 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类型 |
1441

被折叠的 条评论
为什么被折叠?



