MySQL
常用函数
这里介绍下,MySQL中常用的函数,函数有太多太多,不一定都需要记住,只需要有个印象,需要的时候去文档中找一下,记住一些常用的就好了
数学函数
abs(x)
返回x的绝对值
ceil(x)、ceiling(x)
向上取整,比该值大的第一个整数
floor(x)
向下取整,比该值小的第一个整数
|
|
round(x),round(x,y)
四舍五入,round(x),最近的一个整数,round(x,y),这个y可以指定精度
|
|
rand(),rand(x)
rand() 返回0~1之间的随机数
rand(x) 返回0~1之间的随机数,如果x值相等,则返回值相等
|
|
字符串函数
获取字符串长度
length(str),返回str的长度,这里要注意下中文,占3个长度,这里的长度单位是bytes
CHAR_LENGTH(str),返回str的长度,中文和英文一样,占1个字符,这里长度单位是字符
字符串拼接
CONCAT(str1,str2,…),将str1,str2拼接在一起
这里要注意下NULL,如果其中有参数为NULL,则结果为NULL
CONCAT_WS(separator,str1,str2,…),使用指定的separator进行拼接
这里是如果有NULL,对结果是没有影响的,会直接忽略NULL值
剔除空格或指定字符
剔除字符串左右的空格
ltrim(str),剔除左侧空格
rtrim(str),剔除右侧空格
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)
trim可以使用参数来控制剔除空格或者是指定的remstr,默认是空格
字符串填充
LPAD(str,len,padstr),左侧填充
RPAD(str,len,padstr),右侧填充
len是指定str的长度,如果不够,则使用padstr填充,如果超了,则进行截取
字符串截取
LEFT(str,len),从左侧开始截取len个字符
RIGHT(str,len),从右侧截取len个字符
SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len),从指定pos开始截取len个字符
大小写转换
LOWER(str) LCASE(str),将str转为小写
UPPER(str) UCASE(str),将str转为大写
更多字符串函数
参考官网: https://dev.mysql.com/doc/refman/5.7/en/string-functions.html
日期和函数
获取当前日期、时间
|
|
时间戳相关函数
UNIX_TIMESTAMP() 返回当前时间的时间戳,
UNIX_TIMESTAMP(x) 返回指定日期的时间戳
FROM_UNIXTIME(x) 将时间戳转为日期
FROM_UNIXTIME(x,y) 将时间戳转为指定格式的日期
|
|
extract
EXTRACT(unit FROM date)
返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
date 参数是合法的日期表达式。unit 参数可以是下列的值:
|
|
datediff、timediff、timestampdiff
datediff(expr1,expr2),获取2个日期相差的天数
TIMEDIFF(expr1,expr2),返回expr1-expr2的时间差
123456789 mysql> select timediff('2017-09-11 10:00:00','2017-09-08 00:00:00');+-------------------------------------------------------+| timediff('2017-09-11 10:00:00','2017-09-08 00:00:00') |+-------------------------------------------------------+| 82:00:00 |+-------------------------------------------------------+1 row in setmysql>TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回指定unit的datetime_expr2 − datetime_expr1时间差
unit可以是MICROSECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR.
123456789101112131415 mysql> select timestampdiff(DAY,'2017-09-11 10:00:00','2017-09-08 00:00:00');+----------------------------------------------------------------+| timestampdiff(DAY,'2017-09-11 10:00:00','2017-09-08 00:00:00') |+----------------------------------------------------------------+| -3 |+----------------------------------------------------------------+1 row in setmysql> select timestampdiff(HOUR,'2017-09-11 10:00:00','2017-09-08 00:00:00');+-----------------------------------------------------------------+| timestampdiff(HOUR,'2017-09-11 10:00:00','2017-09-08 00:00:00') |+-----------------------------------------------------------------+| -82 |+-----------------------------------------------------------------+1 row in set
时间加减函数
对日期进行加减操作,有很多方法可以使用,最简单的是直接使用interval
当然也可使用提供的函数
ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)
DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
更多日期、时间函数
参考官方介绍: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
条件判断函数
if
if(expr,v1,v2)
如果expr为真,则返回v1,为假,则返回v2
123456789 mysql> select if(1>0,'ok','no'),if(1=0,'ok','no');+-------------------+-------------------+| if(1>0,'ok','no') | if(1=0,'ok','no') |+-------------------+-------------------+| ok | no |+-------------------+-------------------+1 row in setmysql>
ifnull
ifnull(v1,v2)
如果v1的值为null,则返回v2,如果v1不为null,则返回v1
123456789 mysql> select ifnull(99,20),ifnull(NULL,99);+---------------+-----------------+| ifnull(99,20) | ifnull(NULL,99) |+---------------+-----------------+| 99 | 99 |+---------------+-----------------+1 row in setmysql>
case when
这里可以根据多个条件来判断,在不同的情况下,返回不同的值
|
|