ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL教程 - 内建函数(Function)

2022-09-03 10:03:26  阅读:225  来源: 互联网

标签:Function 函数 -- 日期 获得 内建函数 str MySQL 字符串


更新记录
转载请注明出处。
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可取值为:

image

注意:格式化字符:

image
image

备注:ADDDATE(d,INTERVAL expr type)实例:

SELECT ADDDATE('2017-9-5 17:00',INTERVAL '1' YEAR);

image

SELECT ADDDATE('2017-9-5 17:00',INTERVAL '1 1' YEAR_MONTH);

image

备注:DATE_FORMAT(d, format)实例

SELECT DATE_FORMAT('2017-9-5','%y年 %M月 %d日 %j天数');

image

条件判断函数

如果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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有