MySQL数学函数名 | 释义 | 示例 |
---|---|---|
abs(x) | 返回x的绝对值 | |
floor(x) | 强制去小数 | |
ceil(x) | 强制进1 | |
truncate(x,d) | 截断x后的第d位小数,不执行四舍五入 | |
round(x,d) | 截断x后的第d位小数,执行四舍五入 | |
round(x) | 截断x后的第1位小数 | select round(3.468); -> 3.4 select round(3.568); -> 4 |
rand | 随机数 | |
sign(x) | 返回x的符号 | +:1,0:0,-:-1 |
pi() | 返回圆周率 | |
pow(x,y) | 返回x的y次方的值 | |
sqrt(x) | 返回x的二次方根,x>0 | |
exp(x) | 返回e的x次方的值 | |
log(x) | 返回x的对数,x相对基数为2 | |
log10(x) | 返回x的对数,x相对基数为10 | |
radians(x) | 返回x度对应的弧度值 | |
degrees(x) | 返回x弧度对应的角度值 |
MySQL字符串函数名 | 释义 | 示例 |
---|---|---|
char_length(s) | 返回s(字符串)的长度 | |
length() | 返回字节长度 | |
concat() | 返回拼接的字符串 | |
concat_ws(n,s1,s2…) | 返回以n的形式,连接s1,s2…字符串 | select concat_ws(,’a’,’b’); -> ab |
group_concat() | 不能单独使用,配合分组查询,进行行转列 | |
insert(s1,d,len,s2) | 返回s1中自d位置开始len长度的字符被s2取代 | |
lower(s)、upper(s) | 使s字符串中的字母全部小写/大写 | |
left(s,len) | 返回字符串s从左边第一位开始至len长度位置所截取的字符串 | select left(‘abcd’,2); -> ab |
right(s,len) | 返回字符串s从右边第一位开始至len长度位置所截取的字符串 | select right(‘abcd’,2); -> cd |
mid(s,d,len) | 返回字符串s自中间第d位开始,截取长度为len的字符串, | select mid(‘abcd’,2,2); -> bc |
lpad(s1,len,s2) | 需要用s2的符号将s1填充至len长度 | 若s1.length>len,select lpad(‘abc’,2,’#’); -> ab;若s1.length<len,select lpad(‘abc’,5,’#’); -> ##abc; |
rpad(s1,len,s2) | 需要用s2的符号将s1填充至len长度 | 若s1.length>len,select lpad(‘abc’,2,’#’); -> bc;若s1.length<len,select lpad(‘abc’,5,’#’); -> abc##; |
ltrim、rtrim、trim | 去空格 | |
repeat(s,x) | 返回字符串s重复x次之后的值 | |
space(x) | 返回x个空格 | |
replace(s,s1,s2) | 返回字符串s中将所有的s1部分全部替换成s2 | select replace(‘abcabc’,’b’,’’); -> aca*c |
strcmp(s1,s2) | 返回s1与s2比较大小的值 ,若s1>s2,则1,若s1=s2,则0,若s1<s2,则-1 | |
locate(s1,s) | 返回s1在s中的开始位置 | |
reverse(s) | 将字符串s进行反转 | |
elt(x,s1,s2,s3…) | 根据x指定的位置,提取以s1为1起,之后的对应的位置的值,若位置不存在,则返回null | |
field(s,s1,s2…) | 根据s指定的字符串参数,从之后的列表中查找s的位置,若不存在,则返回0 | |
find_in_set(s1,s2) | 根据s1的字符串内容,从参数s2的集合中查找位置 | select find_in_set(‘a’,’a,b,c’); -> 1 |
make_set(x,s1,s2…) | 根据x转化成二进制后的结果,保留和s集合元素数量位低位值,逆序匹配s提取子集合 |
MySQL日期函数名 | 释义 | 示例 |
---|---|---|
curdate() | 年月日 | 格式为:yyyy-MM-dd |
curtime | 时分秒 | 格式为:HH:mm:ss |
now() | 当前时间 | 格式为:yyyy-MM-dd HH:mm:ss |
unix_timestamp | 返回自1970-01-01 00:00:00开始到现在时间的秒数 | |
unix_timestamp(date) | 返回自1970-01-01 00:00:00开始到指定日期的秒数 | |
from_unixtime(x) | 给x毫秒数,返回自1970-01-01 00:00:00开始到现在的日期 | 格式为:yyyy-MM-dd HH:mm:ss |
year(x)、quarter(x)、month(x)、day(x)、hour(x)、minute(x)…… | 返回日期x中相应的年、季度、月、日、时、分、秒、毫秒…… | |
weekday(x) | 返回日期x中相应的星期几(星期日为1) | |
weekofyeaar(x) | 返回日期x是本年的第几个星期,范围是1~53 | |
dayofyear(x) | 返回日期x是本年的第几天 | |
dayofmonth(x) | 返回日期x是本月的第几天 | |
extract(n from x) | 从日期x中以n的形式,提取相应部分,n可以是year、year_month、month…… | |
time_to_sec(x) | 将日期x转换为秒 | |
sec_to_time(x) | 将x秒转换为日期 | |
to_days(x) | 计算日期x至0000年1月1日的天数,系统将0000年定义为365天 | |
from_days(x) | 计算0000年1月1日开始x天后的日期,系统将0000年定义为365天 | |
datediff(x1,x2) | 计算日期x1、x2之间的天数差 | |
adddate(x,x1) | 计算起始日期x加x1天后的日期 | |
adddate(x,interval ‘x2’ n) | 返回起始日期x加上n形式的x2的值后的日期 | select adddate(now(),INTERVAL ‘1 2’ year_month); -> 2022-01-01 23:17:11天数day只能单独加,x2可以是负值 |
date_format(x,n) | 返回日期x以n的要求显示的日期,其中的秒的表达为i | |
%a | 缩写星期名 | |
%b | 缩写月名 | |
%D | 带有英文前缀的月中的天Otc29th | |
%e | 月的天 | |
%f | 微秒 | |
%H | 小时0~23 | |
%h | 小时01~12 | |
%i | 分钟0~59 | |
%j | 年的天001~366 | |
%M | 月名 | |
%m | 月,数值0~12 |
MySQL系统级函数名 | 释义 | 示例 |
---|---|---|
if(expr,v1,v2) | 使用if语句进行判断 | if(1=1,’男’,’女’); -> 男 if(1<>1,’男’,’女’); -> 女 |
ifnull(v1,v2) | 使用if语句进行判断 | ifnull(‘aa’,’bb’); -> aa ifnull(null,’bb’); -> null |
case when expr1 then v1 [when exprn then vn][else vn+1]end | case表示开始,end表示结束。如果表达式expr1成立则返回v1,如果表达式exprn成立则返回vn,否则返回vn+1。 | select when 1=1 then 1 else 2 end; -> 1 select when 1<>1 then 1 else 2 end; -> 2 delimiter //set@v=1;select case @v when 1 then ‘ok’ else ‘no’ end;// -> ok |
case expr when e1 then v1 [when en then vn][else vn+1]end | case表示开始,end表示结束。如果表达式expr取值为e1,则返回vi,如果表达式取值为en,则返回vn,否则则返回vn+1。 |