MySQL常用函数描述转载
原创作者: MySQL技术
本文为作者原创,转载请注明出处: https://www.cnblogs.com/kunjian/p/11737651.html
前言:
MySQL数据库提供了丰富的函数,如我们常用的聚合函数、日期和字符串处理函数。SELECT语句及其条件表达式可以使用这些函数,可以帮助用户更方便地处理表中的数据。MySQL数据库功能更强大。本文主要介绍了几种常用函数的使用方法。
1.聚合函数
聚合函数是正常情况下常用的一类函数,如下所示:
- COUNT(col) 要计算查询结果的行数
- MIN(col) 查询指定列的最小值。
- MAX(col) 该查询指定该列的最大值。
- SUM(col) Sum,返回指定列的总和。
- AVG(col) Average,则返回指定列数据的平均值。
2.数值函数
数值函数主要是对数值型数据进行处理,得到我们想要的结果,常用的几个列举如下,具体使用方法大家可以试试看。
- ABS(x) 返回x的绝对值
- BIN(x) 返回x的二进制
- CEILING(x) 返回大于x最小整数值
- EXP(x) 返回值e(自然对数的底部)x次方
- FLOOR(x) 返回小于x最大整数值
- GREATEST(x1,x2,...,xn) 返回集合中的最大值
- LEAST(x1,x2,...,xn) 返回集合中的最小值。
- LN(x) 返回x自然对数
- LOG(x,y) 返回x的以y底数的对数
- MOD(x,y) 返回x/y模式(余数)
- PI() 返回pi值(Pi)
- RAND() 返回0到1之间的随机值。,可以通过提供参数来完成(种子)使RAND()随机数生成器生成指定值。
- ROUND(x,y) 返回参数x的舍入y小数点位数的值
- TRUNCATE(x,y) 返回数字x截短为y小数位数的结果
下面是下面是下面是下面是下面是一些示例:
# ABS()绝对值函数
mysql> SELECT ABS(5),ABS(-2.4),ABS(-24),ABS(0);
+--------+-----------+----------+--------+
| ABS(5) | ABS(-2.4) | ABS(-24) | ABS(0) |
+--------+-----------+----------+--------+
| 5 | 2.4 | 24 | 0 |
+--------+-----------+----------+--------+
# 取整函数 CEIL(x) 和 CEILING(x) 意思一样,还不少 x 最小整数值
mysql> SELECT CEIL(-2.5),CEILING(2.5);
+------------+--------------+
| CEIL(-2.5) | CEILING(2.5) |
+------------+--------------+
| -2 | 3 |
+------------+--------------+
# 求余函数 MOD(x,y) 返回 x 被 y 除法后的余数
mysql> SELECT MOD(63,8),MOD(120,10),MOD(15.5,3);
+-----------+-------------+-------------+
| MOD(63,8) | MOD(120,10) | MOD(15.5,3) |
+-----------+-------------+-------------+
| 7 | 0 | 0.5 |
+-----------+-------------+-------------+
# RAND() 当调用函数时,它可以产生一个 0 和 1 在随机数之间
mysql> SELECT RAND(), RAND(), RAND();
+---------------------+--------------------+----------------------+
| RAND() | RAND() | RAND() |
+---------------------+--------------------+----------------------+
| 0.24996517063115273 | 0.9559759106077029 | 0.029984071878701515 |
+---------------------+--------------------+----------------------+
3.字符串函数
字符串函数可以处理字符串类型的数据,这在程序应用程序中仍然很有用。同样,下面列出了几种常用的方法:
- LENGTH(s) 计算字符串长度函数并返回字符串的字节长度。
- CONCAT(s1,s2...,sn) 合并字符串函数返回由连接参数生成的字符串,可以是一个或多个。
- INSERT(str,x,y,instr) 将字符串str从第x位置开始,y字符子字符串被替换为字符串。instr,则返回结果
- LOWER(str) 将字符串中的字母转换为小写。
- UPPER(str) 将字符串中的字母转换为大写。
- LEFT(str,x) 返回字符串str最左边的x个字符
- RIGHT(str,x) 返回字符串str最右边的x个字符
- TRIM(str) 删除字符串左侧和右侧的空格
- REPLACE 字符串替换函数,返回被替换的新字符串。
- SUBSTRING 截取字符串并从指定位置返回指定长度的字符交换。
- REVERSE(str) 返回反转的字符串str的结果
下面是下面是下面是下面是下面是一些示例:
# LENGTH(str) 该函数的返回值是字符串的字节长度。
mysql> SELECT LENGTH(name),LENGTH(数据库);
+----------------+---------------------+
| LENGTH(name) | LENGTH(数据库) |
+----------------+---------------------+
| 4 | 9 |
+----------------+---------------------+
# CONCAT(sl,s2,...) 该函数返回由连接参数产生的字符串。 如果有任何参数是 NULL,则返回值为 NULL
mysql> SELECT CONCAT(MySQL,5.7),CONCAT(MySQL,NULL);
+-----------------------+----------------------+
| CONCAT(MySQL,5.7) | CONCAT(MySQL,NULL) |
+-----------------------+----------------------+
| MySQL5.7 | NULL |
+-----------------------+----------------------+
# INSERT(s1,x,len,s2) 返回字符串 s1,子字符串开始 x 位置,以及 len 改为使用字符长度的字符串。 s2
mysql> SELECT INSERT(Football,2,4,Play) AS col1,
-> INSERT(Football,-1,4,Play) AS col2,
-> INSERT(Football,3,20,Play) AS col3;
+----------+----------+--------+
| col1 | col2 | col3 |
+----------+----------+--------+
| FPlayall | Football | FoPlay |
+----------+----------+--------+
# UPPER,LOWER是大小写转换函数
mysql> SELECT LOWER(BLUE),LOWER(Blue),UPPER(green),UPPER(Green);
+---------------+---------------+----------------+----------------+
| LOWER(BLUE) | LOWER(Blue) | UPPER(green) | UPPER(Green) |
+---------------+---------------+----------------+----------------+
| blue | blue | GREEN | GREEN |
+---------------+---------------+----------------+----------------+
# LEFT,RIGHT是Intercept Left或Right字符串函数
mysql> SELECT LEFT(MySQL,2),RIGHT(MySQL,3);
+-----------------+------------------+
| LEFT(MySQL,2) | RIGHT(MySQL,3) |
+-----------------+------------------+
| My | SQL |
+-----------------+------------------+
# REPLACE(s,s1,s2) 使用字符串 s2 替换字符串 s 中的所有字符串 s1
mysql> SELECT REPLACE(aaa.mysql.com,a,w);
+----------------------------------+
| REPLACE(aaa.mysql.com,a,w) |
+----------------------------------+
| www.mysql.com |
+----------------------------------+
# 函数 SUBSTRING(s,n,len) 带有 len 参数的格式,来自字符串。 s 返回相同的长度 len 具有相同字符的子字符串,从该位置开始。 n
mysql> SELECT SUBSTRING(computer,3) AS col1,
-> SUBSTRING(computer,3,4) AS col2,
-> SUBSTRING(computer,-3) AS col3,
-> SUBSTRING(computer,-5,3) AS col4;
+--------+------+------+------+
| col1 | col2 | col3 | col4 |
+--------+------+------+------+
| mputer | mput | ter | put |
+--------+------+------+------+
4.日期和时间函数
- CURDATE 和 CURRENT_DATE 这两个函数的作用相同,返回当前系统的日期值。
- CURTIME 和 CURRENT_TIME 这两个函数的作用相同,返回当前系统的时间值。
- NOW 和 SYSDATE 这两个函数的作用相同,返回当前系统的日期值和时间值。
- UNIX_TIMESTAMP 获取UNIX时间戳函数,它返回一个 UNIX 基于时间戳的无符号整数
- FROM_UNIXTIME 将 UNIX 将时间戳转换为时间格式。UNIX_TIMESTAMP倒数反函数
- MONTH 获取指定日期中的月份。
- MONTHNAME 获取指定日期中的月份。英文名称
- DAYNAME 获取与指定日期对应的星期几的英文名称。
- DAYOFWEEK 获取与指定日期对应的周的索引位置值。
- WEEK 获取指定日期作为一年中的第几周,以及返回值的范围是否为 0〜52 或 1〜53
- DAYOFYEAR 获取指定的日期是一年中的哪一天,返回值的范围为。1~366
- DAYOFMONTH 获取指定的日期为月为日,返回值范围为。1~31
- YEAR 获取年份,返回值范围为 1970〜2069
- TIME_TO_SEC 将时间参数转换为秒。
- SEC_TO_TIME 将秒数转换为时间。TIME_TO_SEC 倒数反函数
- DATE_ADD 和 ADDDATE 这两个函数是相同的,将指定的时间间隔添加到日期。
- DATE_SUB 和 SUBDATE 这两个函数具有相同的功能,即从日期减去指定的时间间隔。
- ADDTIME 时间添加操作将指定的时间与原始时间相加。
- SUBTIME 时间减法,从原始时间减去指定的时间
- DATEDIFF 获取两个日期之间的间隔并返回参数。 1 减去参数 2 的值
- DATE_FORMAT 设置指定日期的格式,并根据参数以指定格式返回值。
- WEEKDAY 获取一周内指定日期的对应工作日索引。
下面是下面是下面是下面是下面是一些示例:
# CURDATE() 和 CURRENT_DATE() 根据当前日期,该函数的工作方式相同。YYYY-MM-DD”或“YYYYMMDD“格式的值返回。
mysql> SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE()+0;
+------------+----------------+------------------+
| CURDATE() | CURRENT_DATE() | CURRENT_DATE()+0 |
+------------+----------------+------------------+
| 2019-10-22 | 2019-10-22 | 20191022 |
+------------+----------------+------------------+
# MONTH(date) 该函数返回指定的 date 对应月份
mysql> SELECT MONTH(2017-12-15);
+---------------------+
| MONTH(2017-12-15) |
+---------------------+
| 12 |
+---------------------+
# DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date,INTERVAL expr type) 这两个函数具有相同的效果,都用于执行日期相加。
mysql> SELECT DATE_ADD(2018-10-31 23:59:59,INTERVAL 1 SECOND) AS C1,
-> DATE_ADD(2018-10-31 23:59:59,INTERVAL 1:1 MINUTE_SECOND) AS C2,
-> ADDDATE(2018-10-31 23:59:59,INTERVAL 1 SECOND) AS C3;
+---------------------+---------------------+---------------------+
| C1 | C2 | C3 |
+---------------------+---------------------+---------------------+
| 2018-11-01 00:00:00 | 2018-11-01 00:01:00 | 2018-11-01 00:00:00 |
+---------------------+---------------------+---------------------+
# DATEDIFF(date1,date2) 返回开始时间 date1 和结束时间 date2 天数
mysql> SELECT DATEDIFF(2017-11-30,2017-11-29) AS COL1,
-> DATEDIFF(2017-11-30,2017-12-15) AS col2;
+------+------+
| COL1 | col2 |
+------+------+
| 1 | -15 |
+------+------+
# DATE_FORMAT(date,format) 函数的基础是 format 此时将显示指定的格式。 date 值
mysql> SELECT DATE_FORMAT(2017-11-15 21:45:00,%W %M %D %Y) AS col1,
-> DATE_FORMAT(2017-11-15 21:45:00,%h:i% %p %M %D %Y) AS col2;
+------------------------------+----------------------------+
| col1 | col2 |
+------------------------------+----------------------------+
| Wednesday November 15th 2017 | 09:i PM November 15th 2017 |
+------------------------------+----------------------------+
5.过程控制功能
过程控制类函数可以用于条件运算来实现SQL允许开发人员将一些应用程序业务逻辑转换为数据库后台的条件逻辑,如下所示:
- IF(test,t,f) 如果test为真,则返回t;否则返回f
- IFNULL(arg1,arg2) 如果arg1不是空的,回车arg1,否则返回。。。arg2
- NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
- CASE WHEN[test1] THEN [result1]...ELSE [default] END 如果testN为真,则返回resultN,否则返回。。。default
- CASE [test] WHEN[val1] THEN [result]...ELSE [default]END 如果test和valN等于,回报resultN,否则返回。。。default
下面是下面是下面是下面是下面是一些示例:
# IF 语句允许根据表达式的条件或值结果执行集合。 SQL 语句
mysql> SELECT IF(1<2,1,0) c1,IF(1>5,√,×) c2,IF(STRCMP(abc,ab),yes,no) c3;
+----+----+-----+
| c1 | c2 | c3 |
+----+----+-----+
| 1 | × | yes |
+----+----+-----+
# IFNULL如果第一个参数不是,则接受两个参数。 NULL,则返回第一个参数。 否则,IFNULL 该函数返回第二个参数。
mysql> SELECT IFNULL(5,8),IFNULL(NULL,OK);
+-------------+-------------------+
| IFNULL(5,8) | IFNULL(NULL,OK) |
+-------------+-------------------+
| 5 | OK |
+-------------+-------------------+
# NULLIF函数
mysql> SELECT NULLIF(5,8),NULLIF(8,8);
+-------------+-------------+
| NULLIF(5,8) | NULLIF(8,8) |
+-------------+-------------+
| 5 | NULL |
+-------------+-------------+
# CASE WHEN 函数
mysql> SELECT CASE WHEN 1>0 THEN true ELSE false END;
+--------------------------------------------+
| CASE WHEN 1>0 THEN true ELSE false END |
+--------------------------------------------+
| true |
+--------------------------------------------+
mysql> SELECT CASE 11 WHEN 1 THEN one
-> WHEN 2 THEN two ELSE more END;
+-------------------------------------------------------------+
| CASE 11 WHEN 1 THEN one
WHEN 2 THEN two ELSE more END |
+-------------------------------------------------------------+
| more |
+-------------------------------------------------------------+
6.加密函数
加密函数主要用于加密串,下面是几个常见的示例:
- ENCRYPT(str,salt) 使用UNIXcrypt()函数,关键字为salt(唯一确定密码的字符串,就像密钥一样。)加密串str
- ENCODE(str,key) 使用key作为密钥加密串str,调用ENCODE()结果是一个二进制字符串,它接受BLOB类型存储
- MD5() 计算字符串str的MD5校验和
- PASSWORD(str) 返回字符串str对于加密版本,该加密过程是不可逆的,并且UNIX加密过程使用不同的算法。
- SHA() 计算字符串str安全散列算法(SHA)校验和
下面是下面是下面是下面是下面是一些示例:
# ENCRYPT函数
mysql> SELECT ENCRYPT(root,salt);
+------------------------+
| ENCRYPT(root,salt) |
+------------------------+
| saFKJij3eLACw |
+------------------------+
# MD5()函数
mysql> SELECT MD5(123456);
+----------------------------------+
| MD5(123456) |
+----------------------------------+
| e10adc3949ba59abbe56e057f20f883e |
+----------------------------------+
# PASSWORD函数
mysql> select PASSWORD(abcd);
+-------------------------------------------+
| PASSWORD(abcd) |
+-------------------------------------------+
| *A154C52565E9E7F94BFC08A1FE702624ED8EFFDA |
+-------------------------------------------+
总结:
本文主要介绍了MySQL常见函数的作用,简单举例说明一些函数的用法。在实际环境中,这些函数可能嵌套在一起,并以复杂得多的方式使用。希望大家在使用时多注意各个参数的作用。
参考资料:
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
上一篇:oracle生成,更新,删掉,索引 下一篇:oracle使用概述