函数
在mysql中,函数分为两类,系统函数(内置函数)和自定义函数,不管是内置函数还是用户自定义函数,都是使用select函数名(参数列表);
系统函数(内置函数)
字符串函数
Char_length():判断字符串的字符数
length():判断字符串的字节数(与字符集)
Concat():连接字符串
Instr():判断字符在目标字符串中是否存在,存在返回其位置,不存在返回0
Lcase():全部小写
Left():从左侧开始截取,直到指定位置(位置如果超过长度,截取所有)字符串
Ltrim():消除左边对应的空格
Mid():从中间指定位置开始截取,如果不指定截取长度,直接到最后
mysql> select char_length('你好中国'),length('你好中国');
+-------------------------+--------------------+
| char_length('你好中国') | length('你好中国') |
+-------------------------+--------------------+
| 4 | 8 |
+-------------------------+--------------------+
1 row in set (0.11 sec)
-- 判断国字是否存在,返回4代表存在并且在第四个字符上
mysql> select concat('你好','中国'),instr('你好中国','国');
+-----------------------+------------------------+
| concat('你好','中国') | instr('你好中国','国') |
+-----------------------+------------------------+
| 你好中国 | 4 |
+-----------------------+------------------------+
1 row in set (1.58 sec)
-- left函数是从左边开始截取所需数目的字符
mysql> select lcase('ABCD'),left('你好中国',4);
+---------------+--------------------+
| lcase('ABCD') | left('你好中国',4) |
+---------------+--------------------+
| abcd | 你好中国 |
+---------------+--------------------+
1 row in set (0.00 sec)
mysql> select lcase('ABCD'),left('你好中国',2);
+---------------+--------------------+
| lcase('ABCD') | left('你好中国',2) |
+---------------+--------------------+
| abcd | 你好 |
+---------------+--------------------+
1 row in set (0.00 sec)
-- mid函数是指从第几个字符开始截取字符(用户指定数目)
mysql> select ltrim(' ab cd'),mid('你好中国',3);
+-----------------+-------------------+
| ltrim(' ab cd') | mid('你好中国',3) |
+-----------------+-------------------+
| ab cd | 中国 |
+-----------------+-------------------+
1 row in set (0.00 sec)
mysql> select ltrim(' ab cd'),mid('你好中国',1);
+-----------------+-------------------+
| ltrim(' ab cd') | mid('你好中国',1) |
+-----------------+-------------------+
| ab cd | 你好中国 |
+-----------------+-------------------+
1 row in set (0.00 sec)
时间函数
Now():返回当前时间,日期 时间
Curdate():返回当前日期
Curtime():返回当前时间
Datediff():判断两个日期之间的天数差距,参数日期必须使用字符串格式(用引号包裹)
Date_add(日期,interval 时间数字 type):进行时间的增加
type:year/day/hour/minute/second
Unix_timestamp():获取时间戳
From_unixtime():将指定时间戳转换成对应的日期时间格式
mysql> select now(),curdate(),curtime();
+---------------------+------------+-----------+
| now() | curdate() | curtime() |
+---------------------+------------+-----------+
| 2021-05-17 16:01:14 | 2021-05-17 | 16:01:14 |
+---------------------+------------+-----------+
1 row in set (1.53 sec)
mysql> select datediff('2020.5.6','2020.5.15');
+----------------------------------+
| datediff('2020.5.6','2020.5.15') |
+----------------------------------+
| -9 |
+----------------------------------+
1 row in set (1.04 sec)
mysql> select date_add('2021-5-1',interval 10 day),date_add('2021-5-1',interval 10 year),date_add('2021-5-1',interval 10 second);
+--------------------------------------+---------------------------------------+-----------------------------------------+
| date_add('2021-5-1',interval 10 day) | date_add('2021-5-1',interval 10 year) | date_add('2021-5-1',interval 10 second) |
+--------------------------------------+---------------------------------------+-----------------------------------------+
| 2021-05-11 | 2031-05-01 | 2021-05-01 00:00:10 |
+--------------------------------------+---------------------------------------+-----------------------------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1621239690 |
+------------------+
1 row in set (1.56 sec)
mysql> select from_unixtime(1532223221);
+---------------------------+
| from_unixtime(1532223221) |
+---------------------------+
| 2018-07-22 09:33:41 |
+---------------------------+
1 row in set (0.00 sec)
数学函数
Abs():绝对值
Ceiling():向上取整
Floor():向下取整
Pow():求指数,谁的多少次方
Rand():获取一个随机数(0-1之间)
Round():四舍五入函数
mysql> select abs(-6),ceiling(1.6),floor(1.6),pow(2,3),rand(),round(1.6);
+---------+--------------+------------+----------+---------------------+------------+
| abs(-6) | ceiling(1.6) | floor(1.6) | pow(2,3) | rand() | round(1.6) |
+---------+--------------+------------+----------+---------------------+------------+
| 6 | 2 | 1 | 8 | 0.06805288611729898 | 2 |
+---------+--------------+------------+----------+---------------------+------------+
1 row in set (1.69 sec)
mysql> select abs(-6),ceiling(1.6),floor(1.6),pow(2,3),rand(),round(1.6);
+---------+--------------+------------+----------+--------------------+------------+
| abs(-6) | ceiling(1.6) | floor(1.6) | pow(2,3) | rand() | round(1.6) |
+---------+--------------+------------+----------+--------------------+------------+
| 6 | 2 | 1 | 8 | 0.9546634852463971 | 2 |
+---------+--------------+------------+----------+--------------------+------------+
1 row in set (0.00 sec)
其他函数
md5():对数据进行md5加密(mysql中的md5与其他任何地方的md5加密出来的内容是完全相同的)
Version():获取版本号
Datebase():显示当前所在数据库
UUID():生成一个唯一标识符(自增长),自增长是单表唯一,UUID是整库(数据唯一同时空间唯一)
mysql> select md5('aa'),version(),database(),uuid();
+----------------------------------+-----------+------------+--------------------------------------+
| md5('aa') | version() | database() | uuid() |
+----------------------------------+-----------+------------+--------------------------------------+
| 4124bc0a9335c27f086f24ba207a4912 | 5.5.53 | NULL | bedcbcd5-b6ea-11eb-91dc-9c7bef19576d |
+----------------------------------+-----------+------------+--------------------------------------+
1 row in set (1.59 sec)