• 数学函数
• 字符串函数
• 日期与时间函数
• 条件判断函数
• 加/解密函数
• 其他函数
一、数学函数
函数 | 说明 |
ABS(X) | 返回绝对值 |
pi() | 返回圆周率 |
Sqrt(expr) | 返回表达式的平方根 |
MOD(x,y) | 求余函数 select MOD(31,8)结果为7 |
CEIL(X)或CEILING(X) | 向上取整,大于或等于X的最小值,CEIL(5.4)=6 |
FLOOR(X) | 向下取整,小于或等于X的最大值,FLOOR(5.8)=5 |
Rand()或Rand(x) | 返回0-1 的隧机 float值 |
Round(x)、ROUND(x,y) | 将数字表达式四含五入到指定的长度或精度, ROUND(1.12)=1, ROUND(1.66)=2, ROUND(1.23,1)=1.2, ROUND(234.42,-1)=230 |
TRUNCATE(x,y) | 返回舍去小数点后y位的数字x,TRUNCATE(1.99,1)=1.9 |
SIGN(x) | 返回参数符号,x值为负,0,正时的返回值为-1,0,1 |
POW(x,y)、POWER(x,y) | x^y |
EXP(x) 、LOG(x) 、Sin(x) 、 Cos(x)、Tan(x) 和 Cot(x) 四个三角函数和 Asin(x) 、 Acos(x)、 Atan(x) 和 Atn2(x)四个反三角函数 | 这些就不多说了 |
二、字符串函数
函数 | 说明 |
CHAR_LENGTH(str)、LENNGTH(str) | 返回字符串长度, CHAR_LENGTH('date')=4 |
CONCAT(str1,str2...) | 合并字符串 |
INSERT(s1,x,len,s2) | 替换函数,将字符串s1从x位置开始的len个字符替换为字符串s2 |
LOWER(X) | 字母转为小写函数,X转换成小写 |
UPPER(X) | 字母转为大写函数,X转换成大写 |
Left(str,n) | 返回字符串中从左边开始n个数的字符,LEFT(‘qwertyu’,5)=qwert |
Right(str,n) | 返回字符串中从右边开始n个数的字符,RIGHT(‘qwertyu’,3)=tyu |
LPAD(s1,len,s2) | 返回字符串s1,在其左边填充字符串s2直到长度为len LPAD('hello',4,'??')=hell,LPAD('hello',10,'??')=?????hello |
RPAD(s1,len,s2) | 返回字符串s1,在其右边填充字符串s2直到长度为len RPAD('hello',4,'??')=hell,RPAD('hello',10,'??')=hello????? |
LTRIM(s) | 把s的左边空格字符串删除 |
RTRIM(s) | 把s的右边空格字符串删除 |
TRIM(s) | 把s两侧的空格字符串删除 |
TRIM(s1 FROM s) | 删除字符串s中两侧的字符串s1 trim('xy' FROM 'xyxboxyokxxyxy')='xboxyokx' |
REPEAT(s,n) | 重复生成字符串,REPEAT('Sql',3)='SqlSqlSql' |
SPACE(n) | 返回一个有n个空格组成的字符串 |
REPLACE(s,s1,s2) | 将字符串s2替换掉字符串s中所有的字符串s1 REPLACE('xxx.mysql.com','x','w')='www.mysql.com' |
STRCMP(s1,s2) | 比较字符串大小,s1=s2返回0,s1<s2返回-1,s1>s2返回1 STRCMP('txt','txt2')=-1 |
SUBSTRING(s,n,len) | 截取函数,从字符串s中返回一个长度为len字符相同的子字符串,起始于位置n。若n是一个负值,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。 |
MID(s,n,len) | MID作用与SUBSTRING是一样的 |
LOCATE(str1,str) POSITION(str1 IN str) INSTR(str,str1) | 匹配子字符串str1在str中的开始位置,三个函数作用相同 LOCATE('ball','football')=5,POSITION('ball' IN 'football')=5 INSTR('football','ball')=5 |
Reverse(str) | 返回字符串str的逆序,REVERSE('abc')='cba' |
三、日期与时间函数
函数 | 说明 |
CURDATE()、 CURRENT_DATE() | 两个函数都是返回当前的日期,格式有‘YYYY-MM-DD’或‘YYYYMMDD’ |
CURTIME() CURRENT_TIME() | 获取当前时间,以‘HH:MM:SS’或'HHMMSS'格式返回 |
CURRENT_TIMESTAMP() LOCALTIME() NOW() SYSDATE() | 获取当前日期和时间值,格式为‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS |
MONTH(date) | 返回date对应的月份,范围值1-12,MONTH('2016-02-13')=2 |
DAYOFWEEK(date) | 返回date对应一周中的索引位置,1:周日,2:周一...7:周六 DAYOFWEEK('2016-02-14')=1 |
WEEKDAY(date) | 返回date对应的工作日索引,0:周一,1:周二...6:周日 DAYOFWEEK('2016-02-14')=6 |
WEEK(date [, mode]) WEEKOFYEAR(date) | 返回日期date是一年中的第几周 WEEK('2011-02-20', 3)=7,WEEKOFYEAR('2011-02-20')=7 |
DAYOFYEAR(date) | 返回日期date是一年中的第几天,范围1-366 DAYOFYEAR('2016-02-20')=51 |
DAYOFMONTH(date) | 返回日期date是一个月中的第几天,范围1-31 DAYOFMONTH('2016-02-20')=20 |
YEAR(date) | 返回date中的年份,范围1970-2069 YAER('11-02-03')=2011,YEAR('96-02-03')=1996 |
EXTRACT(type FROM date) | 获取日期的指定值函数 |
TIME_TO_SEC(time) | 将时间转化为秒数,公式:小时*3600+分钟*60+秒 select TIME_TO_SEC(‘23:23:00’)=84180 |
SEC_TO_TIME(seconds) | 将秒数转为时间格式 select SEC_TO_TIME(2345)=00:39:08 |
ADDTIME(date,expr) | 将expr值添加到date,date是一个日期或日期时间表达式,expr是一个时间表达式 |
SUBTIME(date,expr) | 将date减去expr值,date是一个日期或日期时间表达式,expr是一个时间表达式 |
DATEDIFF(date1,date2) | 返回 date 1-date2的天数值,date1与date2可为日期或日期时间表达式 DATEDIFF(2010-12-31 23:59:59,2010-12-30)返回值为1; DATEDIFF(2010-11-30 23:59:59,2010-12-31)返回值为-31。 |
DATE_FORMAT(date, format) | 根据 format指定的格式显示date值。主要 format格式如表6.3所示 |
GET_FORMAT( val_type, format_type) | 返回日期时间字符串的显示格式, val_type表示日期数据类型,包括DATE、 DATETIME和TME; format_type表示格式化显示类型,包括EUR、INTERVAL、ISO、JS、USA。 GET_FORMAT根据两个值类型组合返回的字符串显示格式如表64所示。一般与DATE_FORMAT(date, format)一起使用 |
四、条件判断函数
条件判断函数也称为控制流程函数,根据满足的条件的不同,执行相应的流程。 MYSQL中进行条件判断的函数有IF、 IFNULL和CASE。
函数 | 说明 |
IF(expr,v1,v2) | 如果表达式expr为true返回v1,否则返回v2 IF(1>2,2,3)=3 |
IFNULL(v1,v2) | 如果v1不为NULL,返回v1,否则返回v2 IFNULL(1,2)=1,IFNULL(NULL,10)=10 |
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END | 该函数表示,如果expr值等于某个vn,则返回对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的rn SELECT case 2 WHEN 1 THEN ‘one’ WHEN 2 THEN ‘two’ ELSE ‘more’ END==>'two' |
五、加/解密函数
函数 | 说明 |
PASSWORD(str) | 加密函数,把明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL: SELECT PASSWORD ('newpwd') =*1FA85AA204CC12B39B20E8FLE839D11B3F9E6AA4 |
MD5(str) | 加密函数,为字符串算出一个MD5 128比特校验和。该值以32位十六进制数字的二进制字串形式返回,若参数为NULL,则会返回NULL: MD5('mypwd')=318bcb4be908d0da6448a0db76908d78 |
ENCODE(str; swd str) | 加密函数,使用 psd_str作为密码,加密str。使用 DECODEO解密结果,是一个和str长度相同的二进制字符串。 |
DECODE( crypt_str;pswd_str) | 使用pswd_str作为密码,解密加密字符串 crypt_str, crypt_str是由 ENCODEO返回的字符串。 |
六、其它函数
函数 | 说明 |
FORMAT(x,n) | 将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。 |
CONVERT(...USING...) | 带有USING的 CONVERT()函数被用来在不同的字符集之间转化数据。 |
CAST(x AS type)、 CONVERT(x,type) | 这两个函数都是将一个类型的值转换为另一个类型的值,可转换的type有: BINARY、CHAR(n)、DATE、TIME、 DATETIME、 DECIMAL、 SIGNED、 UNSIGNED |