一.数学函数
数学函数 | 功能介绍 |
ABS(x) | 返回 x 的绝对值 |
PI( ) | 返回圆周率,默认显示 6 位小数 3.141593 |
SQRT(x) | 返回非负数 x 的二次方根 |
POW(x,y) 和 POWER(x,y) | 返回 x 的 y 次乘方的结果值,POW(3,4) 的结果值为 81 |
CEIL(x) 和 CEILING(x) | 返回不小于 x 的最小整数值 |
FLOOR(x) | 返回不大于 x 的最大整数值 |
ROUND(x) | 返回最接近 x 的整数,对 x 进行四舍五入 |
ROUND(x,y) | 返回最接近 x 的整数,对 x 进行四舍五入 , 保留小数点后面 y 位 |
数学函数 | 功能介绍 |
TRUNCATE(x,y) | 返回截去小数点后 y 位的数值 x |
RAND() | 返回一个随机浮点值 v,0<=v<=1 |
RAND(x) | 返回一个随机浮点值 v,0<=v<=1;x 为整数,被用作种子值, 用来产生重复序列。 |
LOG(x) | 返回 x 的自然对象,x 相对于基数 e 的对数 |
LOG10(x) | 返回 x 的基数为 10 的对数 |
RADIANS(x) | 返回 x 由角度转化为弧度的值,如 x 取值 90,则返回的弧度为PI( )/2 |
DEGREES(x) | 返回 x 由弧度转化为角度的值,如 x 取 PI( ),则返回的角度值为180 |
2.控制流函数
控制流函数 | 功能介绍 |
IF(expr,v1,v2) | 返回表达式 expr 得到不同运算结果时对应的值。若 expr 为TRUE(expr<>0 and expr<>null), 则 IF( ) 的返回值为 v1,否则为 v2 |
IFNULL(v1,v2) | 返回参数 v1 或 v2 的值。如果 v1 不为 null,则返回值为 v1,否则返回值为 v2 |
字符串函数 | 功能介绍 |
RIGHT(str,len) | 截取右侧字符串函数,返回 str 最左的 len 个字符 |
LTRIM(str) | 删除字符串 str 左侧所有空格 |
RTRIM(str) | 删除字符串 str 右侧所有空格 |
TRIM(str) | 删除字符串 str 左右两端所有空格 |
TRIM(s1 from str) | 删除字符串 str 中两端包含的子字符串 s1 |
REPEAT(str,n) | 重复生成字符串函数。返回一个由重复的字符串 str 组成的字符串,该字符串中 str 的重复次数是 n。若 n<=0,则返回一个空字符串;若 str 或 n 为 null,则返回 null |
STRCMP(s1,s2) | 比较字符串大小函数。若 s1 和 s2 相等,则返回 0;若 s1 小于 s2,则返回 -1;若 s1 大于 s2,则返回 1 |
LOCATE(s1,str) | 匹配字符串开始位置的函数。返回子字符串 s1 在字符串 str 中第一次出现的位置。若 str 中没有包括 s1,则返回 0 |
字符串函数 | 功能介绍 |
CHAR_LENGTH(str) | 返回字符串 str1 包含字符的个数。像中文这种多字节的一个字符也只能算单字符 |
LENGTH(str) | 返回字符串 str1 包含字节的个数 |
CONCAT(s1,s2,…) | 字符串合并函数,返回结果为连接参数产生的字符串。参数可以是一个或多个。如有任意一个字符串参数为 null,则返回值为 null |
INSERT(str,pos,len,newstr) | 替换字符串函数。字符串 str 在位置 pos 起始且长度为 len 的子串由字符串 newstr 替换,最终返回替换之后的 str |
LOWER(str) 和 LCASE(str) | 这两个函数功能相同,都是将字符串 str 中的字母转换为小写 |
UPPER(str) 和 UCASE(str) | 这两个函数功能相同,都是将字符串 str 中的字母转换为大写 |
SUBSTR(str,pos,len) 和 SUBSTRING(str,pos,len) | 截取原始字符串 str 中从 pos 开始的 len 长度字符串。len 是可选项,如果该项缺省则获取从 pos 开始的剩余字符串内容 |
字符串函数 | 功能介绍 |
ELT(n,s1,s2…sn) | 返回指定位置的字符串函数。根据 n 的取值,返回指定的字符串 sn。若 n=1,则返回 s1;若 n=2,则返回 s2,以此类推。若 n<1 或 n>sn 的数目,则返回值为 null |
FIELD(s,s1,s2…sn) | 返回指定字符串位置的函数。返回字符串 s 在 s1,s2,…sn 中出现的位置。如果找不到,则返回值为 0;若 s 为 null,则返回值为 0 |
INSERT(str,s1) | 匹配字符串开始位置的函数。功能同 LOCATE 函数 |
REPLACE(str,s1,s2) | 替换函数。使用字符串 s2 替换字符串 str 中所有的子字符串s1 |
REVERSE(str) | 返回和原始字符串 str 顺序相反的字符串 |
三.MySQL 日期和时间函数
日期和时间函数主要用来处理日期和时间的值,一般的日期函数除了使用 DATE 类型的参数外,也可以使用DATETIME 或 TIMESTAMP 类型的参数,只是忽略了这些类型值的时间部分。类似的情况还有以 TIME 类型为参数的函数,可以接受 TIMESTAMP 类型的参数,只是忽略其中的日期部分,许多日期函数可以同时接受数值和字符串类型的参数。
日期和时间函数 | 功能介绍 |
CURDATE( ) 和 CURRENT_DATE( ) | 这两个函数作用相同,都是返回当前系统的日期值 |
CURTIME( ) 和 CURRENT_TIME( ) | 这两个函数作用相同,都是返回当前系统的时间值 |
CURRENT_TIMESTAMP( )、 LOCALTIME( )、NOW( )、 SYSDATE( ) | 这 4 个函数作用相同,都是返回当前系统的日期和时间值 |
DAYNAME(date) | 返回日期参数 date 对应的星期几的英文名称。例如 ,dayname("2017-07-24") 的值为 Monday |
DAYOFWEEK(date) | 返回日期参数 date 对应的一周的索引位置。返回值的范围是 1 ~ 7。其中,1 表示周日,2 表示周一,…,7 表示周六。例如,dayofweek("2017-07-24") 的值为 2,表示周一 |
WEEKDAY(date) | 返回日期参数 date 对应的一周的索引位置。返回值的范围是 0 ~ 6。其中,0 表示周一,1 表示周二,…,6 表示周日。例如,weekday("2017-07-24") 的值为 0,表示周一 |
日期和时间函数 | 功能介绍 |
WEEK(date,mode) | 该函数返回日期参数 date 对应的星期数。WEEK( )的双参数形式允许指定该星期是否起始于周日或周一, 以及返回值的范围是否为从 0 到 53 或从 1 到53。若 mode 参数被省略,则使用 default_week_format 系统自变量的值 |
DAYOFYEAR(date) | 返回日期参数 date 对应的当前年份的第几天,范围为 1 ~ 365 |
year(date) | 返回日期参数 date 对应的年份 |
month(date) | 返回日期参数 date 对应的月份 |
day(date) | 返回日期参数 date 对应的当前月份的天数值 |
DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date, INTERVAL expr type) | 加法计算日期函数,这两个函数作用相同,都是返回一个以参数 date 为起始日期加上时间间隔之后的日期值。expr 参数是希望添加的时间间隔,type 表示时间间隔的类型,type 和 expr 取值见表 5.6 |
日期和时间函数 | 功能介绍 |
DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type) | 减法计算日期函数,这两个函数作用相同,都是返回一个以参数 date 为起始日期减去时间间隔之后的日期值。expr 参数是希望添加的时间间隔,type 表示时间间隔的类型,type 和 expr 取值见表 5.6 |
ADDTIME(time,expr) | 加法计算时间值函数,返回将 expr 值加上原始时间time 之后的值 |
SUBTIME(time,expr) | 减法计算时间值函数,返回将原始时间 time 减去expr 之后的值 |
DATEDIFF(date1,date2) | 计算两个日期之间天数间隔的函数,返回参数 date1 减去 date2 之后的值。如果 date1 在 date2 之前,返回的值为负值 |
DATE_FORMAT(date, format) | 日期和时间格式化函数。返回根据参数 format 指定的格式显示的 date 值。format 包含的格式见表 5.7,即 DATE_FORMAT 和 TIME_FORMAT 函数中format 格式表 |
TIME_FORMAT(time, format) | 时间格式化函数。返回根据参数 format 指定的格式显示的 time 值 |
type 和 expr 取值
type 值 | 预期的 expr 格式 |
MICROSECOND | 微秒数 |
SECOND | 秒数 |
MINUTE | 分钟数 |
HOUR | 小时数 |
DAY | 天数 |
WEEK | 周数 |
MONTH | 月数 |
QUARTER | 季度数 |
YEAR | 年数 |
type 值 | 预期的 expr 格式 |
SECOND_MICROSECOND | ‘秒数 . 微秒数’ |
MINUTE_MICROSECOND | ‘分钟数 . 微秒数’ |
MINUTE_SECOND | ‘分钟数 . 秒数’ |
HOUR_MICROSECOND | ‘小时数 . 微秒数’ |
HOUR_SECOND | ‘小时数 : 分钟数 : 秒数’ |
HOUR_MINUTE | ‘小时数 : 分钟数’ |
DAY_MICROSECOND | ‘天数 . 微秒数’ |
type 值 | 预期的 expr 格式 |
DAY_SECOND | ‘天数 小时数 : 分钟数 : 秒数’ |
DAY_MINUTE | ‘天数 小时数 : 分钟数’ |
DAY_HOUR | ‘天数 小时数’ |
YEAR_MONTH | ‘年数 - 月数’ |
DATE_FORMAT 和 TIME_FORMAT 函数中 format 格式表
格式说明符 | 描述说明 |
%a | 一星期中每天名称的缩写(Sun...Sat) |
%b | 月份的缩写(Jan...Dec) |
%c | 月份的数字表现形式(0...12) |
%D | 带有英语后缀的一个月中的每一天的名称(0th、1st、2nd、3rd) |
%d | 用数字形式表现的每月中的每一天(00...31) |
%e | 用数字形式表现的每月中的每一天(0...31) |
%f | 毫秒(000000...999999) |
%H | 24 时制显示的小时(00...23) |
%h | 12 时制显示的小时(01...12) |
格式说明符 | 描述说明 |
%I | 12 时制显示的小时(01...12) |
%i | 以数字形式表现的分钟数(00...59) |
%j | 一年中的每一天(001...366) |
%k | 24 时制小时的另一种表现格式(0...23) |
%l | 12 时制小时的另一种表现格式(1...12) |
%M | 用完整英文名称表示的月份(January...December) |
%m | 用数字表现的月份(00...12) |
%p | 上午(AM)或下午(PM) |
%r | 12 时制的时间值(hh:mm:ss,后跟 AM 或 PM) |
格式说明符 | 描述说明 |
%S | 秒(00...59) |
%s | 秒(00...59) |
%T | 24 时制的小时(hh:mm:ss) |
%U | 星期(00...53),其中星期天是每星期的开始日 |
%u | 星期(00...53),其中星期一是每星期的开始日 |
%V | 星期(01...53),其中星期天是每星期的开始日,和 %X 一起使用 |
%v | 星期(01...53),其中星期一是每星期的开始日,和 %x 一起使用 |
%W | 一星期中各日名称(Sunday...Saturday) |
%w | 一星期中各日名称(0 代表星期日,6 代表星期六,以此类推) |
格式说明符 | 描述说明 |
%X | 某星期所处年份。其中,星期天是每星期的开始日,采用 4 位数字形式表现,和 %V 一起使用 |
%x | 某星期所处年份。其中,星期一是每星期的开始日,采用 4 位数字形式表现,和 %V 一起使用 |
%Y | 4 位数字表示的年份 |
%y | 2 位数字表示的年份 |