函数
函数表示对输入参数值返回一个具有特定关系的值,MySQL 提供了大量丰富的函数,在进行数据库管理以及数据的查询和操作时将会经常用到各种函数。
通过对数据的处理,数据库功能可以变得更加强大,可以更加灵活地满足不同用户的需求。
各类函数从功能方面主要分为数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等其他函数。
数学函数
字符串函数
MySQL 中的字符串函数有计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。
计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str) 返回值为字符串 str 所包含的字符个数。一个多字节字符算作一个单字符。
例:
| SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg');
+---------------------+--------------------+
| CHAR_LENGTH('date') | CHAR_LENGTH('egg') |
+---------------------+--------------------+
| 4 | 3 |
+---------------------+--------------------+
1 row in set (0.04 sec)
|
LENGTH(str)返回值为字符串的字节长度,使用 utf8(UNICODE 的最终变长字符编码,又称万国码)编码字符集时,一个汉字时 3 字节,一个数字或字母算 1 字节。
| SELECT LENGTH('date'), LENGTH('egg'),LENGTH('吃饭'),LENGTH('2333');
+----------------+---------------+------------------+----------------+
| LENGTH('date') | LENGTH('egg') | LENGTH('吃饭') | LENGTH('2333') |
+----------------+---------------+------------------+----------------+
| 4 | 3 | 6 | 4 |
+----------------+---------------+------------------+----------------+
1 row in set (0.00 sec)
|
日期和时间函数
条件判断函数
条件判断函数也称为控制流程函数,根据满足的不同条件,执行相应的流程。
MySQL 中进行条件判断的函数有 IF、IFNULL 和 CASE.
IF(expr,v1,v2)
函数
IF(expr, v1,v2)
: 如果表达式 expr 是 TRUE(expr<>0 and expr <> NULL),则返回值为 v1; 否则返回值为 v2。
IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
例:
| SELECT IF(1>2,2,3), IF(1<2,'yes','no'), IF(STRCMP('test','test1'),'no','yes');
+-------------+--------------------+---------------------------------------+
| IF(1>2,2,3) | IF(1<2,'yes','no') | IF(STRCMP('test','test1'),'no','yes') |
+-------------+--------------------+---------------------------------------+
| 3 | yes | no |
+-------------+--------------------+---------------------------------------+
1 row in set (0.07 sec)
|
系统信息函数
获取 MySQL 版本号、连接数和数据库名的函数:
| SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.23 |
+-----------+
1 row in set (0.01 sec)
|
CONNECTION_ID() 返回 MySQL 服务器当前连接的次数,每个连接都有各自唯一的 ID
| SELECT CONNECTION_ID();
mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
| 26 |
+-----------------+
1 row in set (0.01 sec)
|
返回值根据登录的次数会有所不同
| SHOW PROCESSLIST;
+----+-----------------+-----------+---------+---------+--------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+---------+---------+--------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 394954 | Waiting on empty queue | NULL |
| 26 | root | localhost | test_db | Query | 0 | init | SHOW PROCESSLIST |
+----+-----------------+-----------+---------+---------+--------+------------------------+------------------+
2 rows in set (0.01 sec)
|
8.0新特性1-加密函数
其他函数
8.0 新特性2-窗口函数