跳至主要內容

MySQL函数

大约 9 分钟约 2794 字

MySQL函数就是MySQL数据库提供的内置函数,可以帮助用户更好地的处理数据表中的数据。下表列举了MySQL内置函数的类别和这些函数的使用范围以及作用。

函数作用
数学函数用于处理数字。其中包括绝对值函数、正弦函数、随机数函数等。
字符串函数用于处理字符串,其中包括字符串连接函数、字符串比较函数、大小写字母转换函数等。
日期和时间函数用于处理时间和日期。其中包括获取获取当前时间的函数、获取当前日期的函数、返回年份的函数和返回日期的函数。
条件判断函数用于在SQL中控制条件选择。其中包括IF、CASE和WHEN语句等。
系统信息函数用于获取SQL数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数和获取数据库版本的函数等。
加密函数用于对字符串进行加密和解密。其中包含字符串加密函数和字符串解密函数。
其他函数包括格式化函数和锁函数等。

数学函数

数学函数是MySQL中常用的一类函数,主要用于处理数字,包括整型和浮点型数等。常用的数学函数如下表:

函数作用
ABS(x)返回x的绝对值
CEIL(x),CEILIN(x)返回不小于x的最小整数值
FLOOR(x)返回不大于x的最大整数值
RAND()返回0~1的随机数
RAND(x)返回0~1的随机数,x相同时返回的随机数相同
SIGN(x)返回参数的符号,x的值分别为负数、0和正数时返回结果分别是-1、0、1
PI()返回圆周率的值
TRUNCATE(x,y)返回数值x保留到小数点后y位的值
ROUND(x)返回离x最近的整数
ROUND(x,y)保留x小数点后y位的值,但截断会使用四舍五入
POW(x,y),POWER(x,y)返回x的y乘方的结果值
SQRT(x)返回非负数x的二次方根
EXP(x)返回e的x乘方后的值
MOD(x,y)返回x除以y的余数
LOG(x)返回x的基数为2的对数
LOG10(x)返回x的基数为10的对数
RADIANS(x)将x转换为弧度
DEGREES(x)将x转换为角度
SIN(x)返回x的正弦,其中x为弧度值
ASIN(x)返回x的反正弦,若x不在-1~1的范围之内则返回NULL
COS(x)返回x的余弦,其中x为弧度值
ACOS(x)返回x的反余弦,若x不在-1~1的范围之内则返回NULL
TAN(x)返回x的正切值,其中x为弧度值
ATAN(x),ATAN2(x,y)返回两个变量x及y的反正切。它类似于x或y的反正切计算,除非两个参数的符号均用于结果所在象限
COT(x)返回x的余切,其中x为弧度值

字符串函数

常用的字符串函数如下表:

函数作用
CHAR_LENGTH(s)返回s的字符数
LENGTH(x)返回值为字符串x的长度,单位为字节。
CONCAT(s1,s2,...)返回结果为连接参数产生的字符串。若有一个参数为NULL则返回值为NULL,若所有参数均为非二进制字符串则结果为非二进制字符串;若参数中有一个是二进制字符串则结果为二进制字符串;一个数字参数会被转换成与之相等的二进制字符串格式,要避免此情况可以使用显示类型cast。
CONCAT_WS(x,s1,s2,...)同CONCAT(x)函数,但是每个字符串要加上x
INSERT(x1,x,len,s2)将字符串s1的x位置开始、长度为len的字符串替换成s2
UPPER(s),UCASE(s)将字符串s的所有字母都变成大写字母
LOWER(s),LCASE(s)将字符串s的所有字母都变成小写字母
LEFT(s,n)返回字符串s的开始的最左n个字符
RIGHT(s,n)返回从字符串s的最右n个字符
LPAD(s1,len,s2)返回字符串s1,其左边由字符s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符
RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度
LTRIM(s)将字符串s的前导空格删除后返回s
RTRIM(s)将字符串s的结尾空格删除后返回s
TRIM(s)去掉字符串s开始处和结尾处的空格
TRIM(s1 FROM s)去掉字符串s中开始处和结尾处的字符串s1
REPEAT(s,n)将字符串s重复n次
SPACE(n)返回n个空格
REPLACE(s,s1,s2)用字符串s2替代字符串s中的字符串s1
STRCMP(s1,s2)比较字符串s1和s2
SUNSTRING(s,n,len)获取从字符串s中的第n个位置开始、长度为len的字符串
MID(s,n,len)同SUBSTRING(s,n,len)
LOCATE(s1,s),POSITION(s1 in s)从字符串s中的获取s1的开始位置
INSTR(s,s1)查找字符串s1在s中的位置,返回首次出现位置的索引值
REVERSE(s)将字符串s的顺序反过来
ELT(n,s1,s2,...)返回第n个字符串
EXPORT_SET(bits,on,off,[,separator[,number_of_bits]])返回一个字符串,生成规则如下:针对bits的二进制模式,如果其位为1,则返回一个on值;如果其位为0,则返回一个off值。每个字符串采用separator进行分隔,默认值为“,”。number_of_bits参数指定bits可用的位数,默认为64位。例如,生成数字位182的二进制(10110110)替换格式,以“@”作为分隔符,设置有效位为6位。其语句如下:select EXPORT_SET(182,‘Y’,‘N’,‘@’,6);其运行结果为:N@Y@Y@N@Y@Y
FIELD(s,s1,s2,...)返回一个与字符串s匹配的字符串的位置
FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置
MAKE_SET(x,s1,s2,...)按x的二进制数从s1,s2,...中选取字符串

日期时间函数

常用的日期时间函数如下:

函数作用
CURDATE(),CURRENT_DATE()返回当前日期
CURTIME(),CURRENT_TIME()返回当前时间
CURRENT_TIMESTAMP(),LOCALTIME()返回当前日期和时间
NOW(),SYSDATE(),LOCALTIMESTAMP()返回当前日期和时间
UNIX_TIMESTAMP()以UNIX时间戳的形式返回当前时间
UNIX_TIMESTAMP(d)将时间d以UNIX时间戳的形式返回
FROM_UNIXTIME(d)以UNIX时间戳的时间转换为普通格式的时间戳
UTC_DATE()返回UTC日期
UTC_TIME()返回UTC时间
MONTH(d)返回日期d中的月份值,范围是1~12
MONTHNAME(d)返回日期d中的月份名称
DAYNAME(d)返回日期d是星期几,如Monday
DAYOFWEEK(d)返回日期d是星期几,0是星期一,1是星期二等
WEEK(d)计算日期d是本年的第几个星期,范围是0~53
WEEKOFYEAR(d)计算日期d是本年的第几个星期,范围是1~53
DAYOFYEAR(d)计算日期d是本年的第几天
DAYOFMONTH(d)计算日期d是本月的第几天
YEAR(d)返回日期d中的年份值
QUARTER(d)返回日期d是第几季度,范围是1~4
HOUR(t)返回时间t中的小时值
MINUTE(t)返回日期t中的分钟值
SECOND(t)返回日期t中的秒钟值
EXTRACT(type FROM d)从日期d中获取指定的值,type指定返回的值,如YEAR、HOUR等
TIME_TO_SEC(t)将时间t转换为秒
SEC_TO_TIME(s)将以秒为单位的时间s转换为时分秒的格式
TO_DAYS(d)计算日期d从0000年1月1日的天数
FROM_DAYS(n)计算从0000年1月1日开始天后的日期
DATEDIFF(d1,d2)计算日期d1和d2相隔的天数
ADDDATE(d,n)计算起始日期d加上n天后的日期
ADDDATE(d,INTERVAL expr type)计算起始日期加上一个时间段后的日期
DATE_ADD(d,INTERVAL expr type)同ADDDATE(d,INTERVAL n type)
SUBDATE(d,n)计算起始日期d减去n天后的日期
SUBDATE(d,INTERVAL expr type)计算起始日期d减去一个时间段的日期
ADDTIME(t,n)计算起始时间t加上n秒的时间
SUBTIME(t,n)计算起始时间t减去n秒的时间
DATE_FORMAT(d,f)按照表达式f的要求显示日期d
TIME_FORMAT(t,f)按照表达式f的要求显示时间d
GET_FORMAT(type,s)根据字符串s获取type型数据的显示格式

条件判断函数

条件判断函数如下:

函数作用
IF(expr,v1,v2)若表达式expr成立,则执行v1,否则执行v2
IFNULL(v1,v2)若v1不为空则返回v1的值,否则返回v2的值
CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2 ...][ELSE vn] ENDcase表示函数开始,end表示语句结束。若表达式expr1成立则返回v1的值;若表达式expr2成立则返回v2的值,以此类推,最后遇到ELSE时返回vn的值。

系统信息函数

常用的系统信息函数如下:

函数作用
VERSION()获取数据库的版本号
CONNECTION_ID()获取数据库的连接数
DATABASE(),SCHEMA()获取当前数据库名
USER(),SYSTEM_USER(),SESSION_USER()获取当前用户
CURRENT_USER(),CURRENT_USER获取当前用户
CHAR_SET(str)获取字符串str的字符集
COLLATION(str)获取字符串str的字符排列方式
LAST_INSERT_ID()获取最近生成的AUTO_INCREMENT值

其他函数

MySQL中的其他函数如下:

函数作用
FORMAT(x,n)将数字x进行格式化,将x保留到小数点后6位。这个过程需要四舍五入
ASCII(s)返回字符串s的第一个字符的ASCII码
BIN(x)返回x的二进制编码
HEX(x)返回x的十六进制编码
OCT(x)返回x的八进制编码
CONV(x,f1,f2)将x从f1进制数变成f2进制数
INET_ATON(IP)将IP地址转换成数字显示
INET_NTOA(N)将数字N转换成IP的形式
GET_LOCK(name,time)定义一个名称为name、持续时间为time秒的锁。锁定成功返回1,锁定失败返回0,若遇到错误则返回NULL
RELEASE_LOCK(name)解除名称为name的锁。若解锁成功则返回1,若尝试超时返回0,若遇到错误则返回NULL
IS_FREE_LOCK(name)判断是否使用名为name的锁。若使用则返回0,否则返回1
BENCHMARK(count,expr)将表达式expr重复执行count次
CONVERT(s using cs)将字符串s的字符集变为cs
CAST(x AS type),
CONVERT(x,type)
将x变为type类型,这两个函数只对BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER类型起作用。这两种方法只是改变了输出值的数据类型,并没有改变表中字段的类型
上次编辑于:
贡献者: QI