MySQL教程 - 内建函数(Function)
作者:互联网
更新记录
转载请注明出处。
2022年9月3日 发布。
2022年9月3日 从笔记迁移到博客。
内建函数
主要的函数类型
数学函数
字符串函数
日期和时间函数
条件判断函数
系统信息函数
加密函数
其他函数
数值函数
ABS(X) -- 绝对值
CEIL(X) -- 天花板函数
CEILING(X) -- 天花板函数
FLOOR(X) -- 地板函数
RAND() -- 随机数,0~1随机数
RAND(X) -- 随机数(带种子)
ROUND(X) -- 四舍五入(取整)
ROUND(X,Y) -- 四舍五入(保留y位小数)
SIGN(X) -- 返回符号(-1、0、1)
TRUNCATE(X,Y) -- 截取(小数点后Y位)
POW(X,Y) -- 次方
POWER(X,Y) -- 次方
PI() -- 圆周率
SQRT(X) -- 开平方
EXP(x) -- e的乘方
MOD(X,Y) -- 求余数
LOG(X) -- x的自然对数
LOG10(X) -- x的e对数
BIN(X) -- 转为二进制
RADIANS(X) -- 角度转为弧度
DEGREES(X) -- 弧度转为角度
SIN(X) -- 正弦
ASIN(X) -- 反正弦
COS(X) -- 余弦
ACOS(X) -- 反余弦
TAN(X) -- 余弦
ATAN(x) -- 反余弦
COT(x) -- 余切
字符串函数
LENGTH(str) -- 获取字符串字节长度
CHAR_LENGTH(str) -- 获取字符串个数,字符个数
CONCAT(S1,S2....) -- 连接字符串(有一个参数为NULL,结果为NULL)
CONCAT_WS(X,S1,S2) -- 连接字符串(带分隔符)
INSERT(S1,START,LEN,S2) -- 替换(S1/S2一个参数为NULL,结果为NULL)
UPPER(str) -- 转为大写
LOWER(str) -- 转为小写
UCASE(str) -- 转为大写
LCASE(str) -- 转为小写
LEFT(S,N) -- 获得左起N个字符串
RIGHT(S,N) -- 获得右起N个字符串
LPAD(S1,LEN,S2) -- 将S1左边填充到LEN长度使用S2
RPAD(S1,LEN,S2) -- 将S1右边填充到LEN长度使用S2
TIRM(str) -- 删除空白
TIRM(str1 FROM str2) -- 删除指定空白,str1
LTRIM(str) -- 删除左空白
RTRIM(str) -- 删除右空白
TRIM(strdel from str) -- 删除str两端的strdel
REPEAT(S,N) -- 字符串S重复N次,参数有null,结果为null
SPACE(N) -- 生成N个空格
REPLACE(S,S1,S2) -- 使用S2代替S中的S1
STRCMP(S1,S2) -- 比较字符串(-1,0,1)
SUBSTRING(S,START,LEN) -- 获取子串
MID(S,START,LEN) -- 获取子串,同SUBSTRING
LOCATE(str1,str) -- 获得子串在主串的开始位置
POSITION(str1 IN str) -- 获得子串在主串的开始位置
INSTR(str,str1) -- 获得子串在主串的开始位置
REVERSE(S) -- 反转字符串
ELT(POSITION,S1,S2,S3..) -- 返回指定位置的字符串
FILED(S,S1,S2,...) -- 获得S与后续字符串匹配的位置
FIND_IN_SET(S1,S2) -- 获得S1在S2出现的位置。
EG:FIND_IN_SET('Hi','Hi,panda')
注意:MySQL中字符串起始位置为1
日期和时间函数
日期格式:YYYY-MM-DD
时间格式:HH:MM:SS
NOW() -- 获得当前日期和时间字符串
CURRENT_TIMESTAMP() -- 获得当前日期和时间字符串
LOCALTIMESTAMP() -- 获得当地日期和时间字符串
SYSDATE() -- 获得系统日期时间
LOCALTIME() -- 获得当地日期时间
CURRENT_DATE() -- 获得当前YYYY-MM-DD日期字符串
CURRENT_TIME() -- 获得当前HH:MM:SS时间字符串
CURDATE() -- 获得当前YYYY-MM-DD日期字符串
CURTIME() -- 获得当前HH:MM:SS时间字符串
TIME() -- 获得当前时间戳
UNIX_TIMESTAMP() -- 返回当前时间的UNIX时间戳
UNIX_TIMESTAMP(d) -- 返回指定时间的UNIX时间戳
FROM_UNIXTIME(d) -- 把UNIX时间戳转为普通格式时间
UTC_DATE() -- 获得UTC日期
UTC_TIME() -- 获得UTC时间
DAYNAME(date) -- 获得日期中的星期,结果范围:英语星期单词
WEEKDAY(date) -- 获得日期中的星期索引(周一为0)
DAYOFWEEK(date) -- 获得日期中的星期索引(周日为1)
WEEK(date) -- 获得日期中的年中第几周,结果范围:0~53
WEEKOFYEAR(date) -- 获得日期中的年中第几周,结果范围1~53
DAYOFYEAR(date) -- 获得日期中的年中的第几天
DAYOFMONTH(date) -- 获得日期中的月中的第几天
YEAR(date) -- 获得日期中的年份
MONTH(date) -- 获得日期中的月份,结果范围1~12
MONTHNAME(date) -- 获得日期中的月份,结果范围:英语月份单词
QYARTER(date) -- 获得日期中的日期的季度,结果范围:1~4
HOUR(time) -- 获得指定时间的小时数
MINUTE(time) -- 获得指定时间的分钟数
SECOND(time) -- 获得指定时间的秒数
TIME_TO_SEC(time) -- 时间转为秒数
SEC_TO_TIME(second) -- 秒数转为时间
TO_DAYS(d) -- 计算日期d到0000年的1月1日天数
FROM_DAYS(n) -- 计算从0000年1月1日开始那天后的日期
EXTRACT(type FROM date) -- 获取日期中的部分。
-- type可以是year/month/hour/second等
DATEDIFF(d1,d2) -- 计算日期d1~d2之间相隔的天数
ADDDATE(d,n) -- 计算日期d加上n天后的日期
ADDDATE(d,INTERVAL type)-- 计算日期d加上一段时间后的日期
DATE_ADD(d,INTERVAL type) -- 计算日期d加上一段时间后的日期
SUBDATE(d,n) -- 计算日期d减去n天后的日期
SUBDATE(d,INTERVAL type) -- 计算日期d减去上一段时间后的日期
ADDTIME(t,n) -- 计算时间t加上n秒后的时间
SUBTIME(t,n) -- 计算时间t减去n秒后的时间
DATE_FORMAT(d,format) -- 按照format要求格式化日期d
TIME_FORMAT(t,format) -- 按照format要求格式化时间t
GET_FORMAT(type, s) -- 根据字符串说的type类型数据的显示格式
注意:type可取值为:
注意:格式化字符:
备注:ADDDATE(d,INTERVAL expr type)实例:
SELECT ADDDATE('2017-9-5 17:00',INTERVAL '1' YEAR);
SELECT ADDDATE('2017-9-5 17:00',INTERVAL '1 1' YEAR_MONTH);
备注:DATE_FORMAT(d, format)实例
SELECT DATE_FORMAT('2017-9-5','%y年 %M月 %d日 %j天数');
条件判断函数
如果EXPRESSION成立(不为FALSE,不等于NULL),输出V1,否则输出V2
IF(EXPRESSION, V1, V2)
如果V1不是NULL,输出V1,否则输出V2
IFNULL(V1,V2)
当exp1满足则返回v1,否则当exp2满足则返回v2,以此类推,都不满足返回vn
CASE 表示开始,END 表示结束
CASE
WHEN exp1 THEN v1
[WHEN exp2 THEN v2.....]
[ELSE vn]
END
CASE 表示开始,END 表示结束
当exp等于e1返回v1,当exp等于e2返回v2,以此类推,都不满足返回vn
CASE exp
WHEN e1 THEN v1
[WHEN e2 THEN v2....]
ELSE vn
END
统计函数
COUNT() //计数
SUM() //总和
MIN() //最小值
MAX() //最大值
AVG() //平均数
系统信息函数
VERSION() -- 获得MySQL版本
CONNECTION_ID() -- 获得当前服务器连接次数
SHOW PROCESSLIST; -- 显示详细连接信息
DATABASE() -- 获得当前使用的数据库
SCHEMA() -- 获得当前使用的数据库
USER() -- 获得当前的用户
CURRENT_USER() -- 获得当前的用户
SYSTEM_USER() -- 获得当前的用户
SESSION_USER() -- 获得当前的用户
CHARSET(str) -- 获得当前字符串使用的字符集
COLLATION(str) -- 获得当前字符串使用的排列方式
LAST_INSERT_ID() -- 获得最后一次插入的Id
加密函数
对str进行加密,该加密不可逆
PASSWORD(str)
对str进行MD5进行加密,结果为32位,参数为NULL,结果为NULL
MD5(str)
可逆的加解密
注意加密后的返回的是BLOB二进制类型
ENCODE(被加密str,秘钥str);
DECODE(被解密str,秘钥str);
其他函数
格式化函数
将X四舍五入保留N位小数
注意:结果带有千分位
FORMAT(X,N)
转换函数
将s的第一个字符转为ASCII码
ASCII(s)
将x从十进制转为二进制编码
BIN(X)
将x从十进制转为八进制编码
OCT(X)
将x从十进制转为十六进制编码
HEX(X)
将x从F1进制转为F2进制
CONV(X,F1,F2)
IP地址转换函数
将IP地址字符串转为数字
INET_ATON('127.0.0.1')
将数字转为IP地址字符串
INET_NTOA(2130706433)
锁函数
设置一个名为name时间为time(单位:s)的锁
注意:创建新锁,旧锁将解除
成功返回1,超时返回0,错误返回NULL
GET_LOCK(name,time)
释放一个名为name的锁
成功返回1,超时返回0,错误返回NULL
RELEASE_LOCK(name)
检测一个名为name的锁是否工作中
未使用返回1,使用中返回0
错误返回NULL
IS_FREE_LOCK(name)
重复执行函数
BENCHMARK(count,expression)
将expression重复执行count遍
可以用于计算运行效率
字符集编码转换函数
CONVERT(s USING cs)
将s的字符串转为cs编码
EG:
SELECT CONVERT('panda' USING 'UTF8');
数据转换函数
将x转为type类型
CAST(x AS type)
注意:只是改变输出类型,不改变本身
注意:只对BINARY/CHAR/DATE/DATETIME/TIME/SIGNED INTEGER/ UNSIGNED INTEGER有作用
EG:
SELECT CAST(123 AS CHAR);
将x转为type类型
CONVERT(x,type)
注意:只是改变输出类型,不改变本身
注意:只对BINARY/CHAR/DATE/DATETIME/TIME/SIGNED INTEGER/ UNSIGNED INTEGER有作用
EG:
SELECT CONVERT(123 ,CHAR);
标签:Function,函数,--,日期,获得,内建函数,str,MySQL,字符串 来源: https://www.cnblogs.com/cqpanda/p/16652022.html