MySQL函数

日期函数

获得年月日:

获得时分秒:

获得时间戳:

  • 自动转换成了日期和时间

在日期的基础上加日期:

在日期的基础上减去时间:

计算两个日期之间相差多少天:

案例

创建一个留言表

create table msg (
  id int primary key auto_increment,
  content varchar(30) not null,
  sendtime datetime
);

插入数据

insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());

显示所有留言信息,发布日期只显示日期,不用显示时间

请查询在2分钟内发布的帖子

select * from msg where date_add(sendtime, interval 2 minute) > now();

字符串函数

案例

获取emp表的ename列的字符集

select charset(ename) from emp;

要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”

mysql> select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from exam_result;
+--------------------------------------------------+
| 分数                                             |
+--------------------------------------------------+
| 唐三藏的语文是67.0分,数学是99.0|
| 孙悟空的语文是87.5分,数学是78.0|
| 猪悟能的语文是88.0分,数学是98.5|
| 曹 孟德的语文是82.0分,数学是84.0|
| 刘玄德的语文是55.5分,数学是86.0|
| 孙权的语文是70.0分,数学是73.0|
| 宋公明的语文是75.0分,数学是66.0|
+--------------------------------------------------+
7 rows in set (0.00 sec)

求学生表中学生姓名占用的字节数

  • 注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
mysql> select length(name), name from exam_result;
+--------------+------------+
| length(name) | name       |
+--------------+------------+
|            9 | 唐三藏     |
|            9 | 孙悟空     |
|            9 | 猪悟能     |
|           10 | 曹 孟德    |
|            9 | 刘玄德     |
|            6 | 孙权       |
|            9 | 宋公明     |
+--------------+------------+
7 rows in set (0.00 sec)

将EMP表中所有名字中有S的替换成’上海’

mysql> select replace(ename, 'S', '上海'), ename from emp;
+-------------------------------+--------+
| replace(ename, 'S', '上海')   | ename  |
+-------------------------------+--------+
| 上海MITH                      | SMITH  |
| ALLEN                         | ALLEN  |
| WARD                          | WARD   |
| JONE上海                      | JONES  |
| MARTIN                        | MARTIN |
| BLAKE                         | BLAKE  |
| CLARK                         | CLARK  |
| 上海COTT                      | SCOTT  |
| KING                          | KING   |
| TURNER                        | TURNER |
| ADAM上海                      | ADAMS  |
| JAME上海                      | JAMES  |
| FORD                          | FORD   |
| MILLER                        | MILLER |
+-------------------------------+--------+
14 rows in set (0.00 sec)

截取EMP表中ename字段的第二个到第三个字符

mysql> select substring(ename, 2, 2), ename from emp;
+------------------------+--------+
| substring(ename, 2, 2) | ename  |
+------------------------+--------+
| MI                     | SMITH  |
| LL                     | ALLEN  |
| AR                     | WARD   |
| ON                     | JONES  |
| AR                     | MARTIN |
| LA                     | BLAKE  |
| LA                     | CLARK  |
| CO                     | SCOTT  |
| IN                     | KING   |
| UR                     | TURNER |
| DA                     | ADAMS  |
| AM                     | JAMES  |
| OR                     | FORD   |
| IL                     | MILLER |
+------------------------+--------+
14 rows in set (0.01 sec)

以首字母小写的方式显示所有员工的姓名

mysql> select concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) from emp;
+------------------------------------------------------------+
| concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) |
+------------------------------------------------------------+
| sMITH                                                      |
| aLLEN                                                      |
| wARD                                                       |
| jONES                                                      |
| mARTIN                                                     |
| bLAKE                                                      |
| cLARK                                                      |
| sCOTT                                                      |
| kING                                                       |
| tURNER                                                     |
| aDAMS                                                      |
| jAMES                                                      |
| fORD                                                       |
| mILLER                                                     |
+------------------------------------------------------------+
14 rows in set (0.00 sec)

数学函数

绝对值

mysql> select abs(-100.2);
+-------------+
| abs(-100.2) |
+-------------+
|       100.2 |
+-------------+
1 row in set (0.00 sec)

向上取整

mysql> select ceiling(23.01);
+----------------+
| ceiling(23.01) |
+----------------+
|             24 |
+----------------+
1 row in set (0.00 sec)

向下取整

mysql> select floor(23.9);
+-------------+
| floor(23.9) |
+-------------+
|          23 |
+-------------+
1 row in set (0.00 sec)

保留2位小数位数(小数四舍五入)

mysql> select format(3.1415, 2);
+-------------------+
| format(3.1415, 2) |
+-------------------+
| 3.14              |
+-------------------+
1 row in set (0.00 sec)

产生随机数

mysql> select rand();
+----------------------+
| rand()               |
+----------------------+
| 0.015211693956713838 |
+----------------------+
1 row in set (0.00 sec)

其它函数

user() 查询当前用户

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

mysql> select md5('admin');
+----------------------------------+
| md5('admin')                     |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
1 row in set (0.00 sec)

database()显示当前正在使用的数据库

mysql> select database();
+------------+
| database() |
+------------+
| scott      |
+------------+
1 row in set (0.00 sec)

ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

mysql> select ifnull('abc', '123');
+----------------------+
| ifnull('abc', '123') |
+----------------------+
| abc                  |
+----------------------+
1 row in set (0.00 sec)

mysql> select ifnull(null, '123');
+---------------------+
| ifnull(null, '123') |
+---------------------+
| 123                 |
+---------------------+
1 row in set (0.00 sec)
posted @ 2025-06-24 15:44  shilinnull  阅读(6)  评论(0)    收藏  举报  来源