MySQL中的单行函数和聚合函数

单行函数

接收一个参数并返回一个结果

函数之间可以嵌套

参数可以是一个字段,也可以是一个值

数值函数

函数 用法
ABS(x) 返回x的绝对值
SIGN(x) 返回x的符号,正数返回1,负数返回-1, 0返回0
PI() 返回圆周率的值
CEIL(x) CEILING(x) 向上取整
FLOOR(x) 向下取整
MOD(x,y) 取x/y的余数
LEAST(x1,x2...xn) 取参数中的最小值
GREATEST(x1,x2...xn) 取参数中的最大值
RAND() 返回(0, 1)随机数
RAND(x) 返回(0, 1)随机数,x作为种子,相同的x会返回相同的随机数
ROUND(x) 四舍五入
ROUND(x, y) 对x进行四舍五入,y是保留的小数位
TRUNCATE(x, y) 对x进行截断,y是保留的小数位
SQRT(x) 平方根
RADIANS(x) 角度转为弧度,x为角度
DEGREES(x) 弧度转为角度,x为弧度
SIN(x) 正弦,x为弧度
ASIN(x) 反正弦,x为弧度,如果x不在-1到1之间,返回null
COS(x) 余弦,x为弧度
ACOS(x) 反余弦,x为弧度,如果x不在-1到1之间,返回null
TAN(x) 正切,x为弧度
ATAN(x) 反正切,x为弧度
ATAN2(x, y) 返回两个参数的反正切,x为弧度
COT(x) 余切,x为弧度
POW(x,y) POWR(x, y) x的y次方
EXP(x) e的x次方
LN(x) LOG(x) e为底,x的对数
LOG10(x) 10为底,x的对数
LOG2(x) 2为底,x的对数
BIN(x) 返回x的二进制
HEX(x) 返回x的十六进制
OCT(x) 返回x的八进制
CONV(x, f1,f2) 返回f1进制数变为f2进制数

字符串函数

函数 用法
ASCII(s) s的ASCII
CHAR_LENGTH(s) s的字符个数
LENGTH(s) s的字节个数
CONCAT(s1,s2...sn) 将多个字符串拼接起来
CONCAT_WS(x, s1,s2...sn) 将多个字符串通过x连接起来
INSERT(str, idx,len, replaceStr) 将字符串str从idx索引开始取len长度的字符,替换为replaceStr(索引是从1开始的)
REPLACE(str, a, b) 将字符串中的a替换为b
UPPER(s) UCASE(s) 将s转为大写
LOWER(s) LCASE(s) 将s转为小写
LEFT(s, n) 取s中的前n个字符
RIGHT(s,n) 取s中的后n个字符
LPAD(s, len, pad) 将s字符串的长度从左边补充到len长度,填充符是pad
RPAD(s, len, pad) 将s字符串的长度从右边补充到len长度,填充符是pad
TRIM(s) 去除s中的首尾空格
LTRIM(s) 去除s中头部的空格
RTRIM(s) 去除s中尾部的空格
TRIM(s1 FROM s) 去除首尾的s1
TRIM(LEADING s1 FROM s) 去除头部的s1
TRIM(TRAILING s1 FROM s) 去除尾部的s1
REPEAT(s, n) 将s重复n遍
SPACE(n) 返回n个空格
STRCMP(s1,s2) 比较两个字符串的大小(ASCII),前面大返回1,后面大返回-1,相等返回0
SUBSTR(s,index, len) 从index索引位置开始,截取len长度字符
LOCATE(substr, s) substr首次在s中出现的索引位置,没找到返回0
ELT(m, s1,s2...sn) 从s1,s2...sn中取出第m个的那个字符串
FIELD(s,s1,s2...sn) 获取s在s1,s2...sn中首次出现的索引位置
FIND_IN_SET(s1,s2) 获取s1在s2列表中出现的索引位置,其中s2是以逗号分隔的字符串
REVERSE(s) 反转字符串s
NULLIF(s1, s2) s1和s2相等返回NULL,不相等返回s1

日期和时间函数

  1. 获取日期、时间

    函数 用法
    CURDATE() CURRENT_DATE() 获取当前日期,返回年月日
    CURTIME() CURRENT_TIME() 获取当前时间,返回时分秒
    NOW() SYSDATE() CURRENT_TIMESTAMP() LOCALTIME() LOCALTIMESTAMP() 获取当前日期时间,返回年月日时分秒
    UTC_DATE() 获取世界标准时间,返回年月日
    UTC_TIME() 获取世界标准时间,返回时分秒
  2. 日期与时间戳的转换

    函数 用法
    UNIX_TIMESTAMP() 将当前时间转为时间戳
    UNIX_TIMESTAMP(date) 将指定日期转为时间戳
    FROM_UNIXTIME(timestamp) 将时间戳转为普通格式的时间
  3. 获取月份、星期、星期数、天数等函数

    函数 用法
    YEAR(date) MONTH(date) DAY(date) 分别获取日期中的年月日
    HOUR(date) MINUTE(date) SECOND(date) 分别获取日期中的时分秒
    MONTHNAME(date) 根据指定日期,返回月份的英文名称
    DAYNAME(date) 根据指定日期,返回星期数, Friday
    WEEKDAY(date) 根据指定日期,返回星期数,周一是0,周二是1...
    QUARTER(date) 根据指定日期,返回季度
    WEEK(date) WEEKOFYEAR(date) 根据指定日期,返回一年中的第几周
    DAYOFYEAR(date) 根据指定日期,返回一年中的第几天
    DAYOFMONTH(date) 根据指定日期,返回一个月中的第几天
    DAYOFWEEK(date) 根据指定日期,返回一周中的第几天
  4. 日期操作

    函数 用法
    EXTRACT(type FROM date) 返回指定日期中type类型的数据
  5. 时间和秒的转换

    函数 用法
    TIME_TO_SEC(time) 将时间(时分秒)转换为秒
    SEC_TO_TIME(sec) 将秒转换为时间(时分秒)
  6. 计算日期和时间

    函数 用法
    DATE_ADD(date, interval type) ADDDATE(date, interval, type) 返回与date相差interval时间段的日期时间
    DATE_SUB(date, interval, type) SUBDATE(date, interval, type) 返回与date相差interval时间段的日期时间
    ADDTIME(time1, time2) 在time1基础上加上time2,当time2是一个数字时,看成是秒,可以为负数
    SUBTIME(time1, time2) 在time1基础上减去time2,当time2是一个数字时,看成是秒,可以为负数
    DATEDIFF(date1, date2) 返回date1和date2相差的天数
    TIMEDIFF(time1,time2) 返回time1和time2相差的时间
    FROM_DAYS(N) 返回从000年1月1日起,n天之后的日期
    TO_DAYS(N) 返回date距离0000年1月1日的天数
    LAST_DAY(date) 返回date所在月份的最后一天日期
    MAKEDATE(year,n) 根据给定年份和当前所在的天数,组合成一个日期
    MAKETIME(hour. minute, second) 将给定的时、分、秒组合成时间
    PERIOD_ADD(time, n) 返回time加上n之后的时间
  7. 日期的格式化与解析

    函数 用法
    DATE_FORMAT(date, fmt) 将date按照fmt格式化
    TIME_FORMAT(time, fmt) 将time按照fmt格式化
    STR_TO_DATE(str, fmt) 将字符串按照格式化转为日期
    GET_FORMAT(date_type, fmt_type) 根据type获取格式化字符串

流程控制函数

函数 用法
IF(value1,value2,value3) 三目运算,value1为真返回value2,否则返回value3
IFNULL(value1,value2) value1不为NULL,返回value1,否则返回value2
CASE WHEN...THEN...WHEN...THEN...ELSE...END 类似于if...else
CASE expr WHEN...THEN...WHEN...THEN...ELSE...END 类似于switch...case

加密函数

函数 用法
MD5(str) MD5加密,不可逆
SHA(str) 比MD5更安全,不可逆

MySQL信息函数

函数 用法
VERSION() MySQL版本号
CONNECTION_ID() MySQL服务器的连接数
DATABASE() SCHEMA() 当前所在命令行的数据库
USER() CURRENT_USER() SYSTEM_USER() SESSION_USER() 当前连接MySQL的用户名
CHARSET(str) 返回str的字符集
COLLATION(str) 返回str的比较规则

其他函数

函数 用法
FORMAT(num, n) num四舍五入之后保留n位小数,n<=0,则保留整数部分
CONV(value, from, to) 将value从from进制转换为to进制
INET_ATON(ipValue) 将以点分割的ip地址转为数字形式
INET_NTOA(value) 将数字形式的ip地址转为以点分割的ip地址
BENCHMARK(n, expr) 计算表达式expr执行n次的时间
CONVERT(value USING char_code) 将value的字符编码修改为char_code

聚合函数

接收多个参数并返回一个结果

函数之间可以嵌套

常用的聚合函数

函数 用法
AVG() 平均数
SUM() 总和
MAX() 最大值
MIN() 最小值
COUNT() 计算指定字段在查询结果中出现的次数,不包含NULL
相关推荐
J.P.August1 小时前
Oracle DataGuard启动与关闭顺序
数据库·oracle
尚雷55801 小时前
Oracle 与 达梦 数据库 对比
数据库·oracle·达梦数据库
小猿姐2 小时前
Ape-DTS:开源 DTS 工具,助力自建 MySQL、PostgreSQL 迁移上云
数据库·mysql·postgresql·开源
摸摸陌陌2 小时前
Redis快速入门
数据库·redis·缓存
Elastic 中国社区官方博客3 小时前
Elasticsearch Serverless 中的数据流自动分片
大数据·数据库·elasticsearch·搜索引擎·serverless·时序数据库
Minyy113 小时前
牛客网刷题SQL--高级查询
数据库·sql
ygqygq23 小时前
ElK 8 收集 MySQL 慢查询日志并通过 ElastAlert2 告警至飞书
mysql·elk·飞书
秋意钟3 小时前
MySQL基本架构
数据库·mysql·架构
朱小勇本勇4 小时前
Qt实现控件拖曳
开发语言·数据库·qt