当前位置: 首页 > news >正文

<7>-MySQL内置函数

目录

一,日期函数

二,字符串函数

三,数学函数

四,其他函数


一,日期函数

用法:

mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2025-05-28     |
+----------------+
1 row in set (0.00 sec)mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 10:38:44       |
+----------------+
1 row in set (0.00 sec)mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2025-05-28 10:39:01 |
+---------------------+
1 row in set (0.00 sec)mysql> select date_add('2017-10-28', interval 10 day);
+-----------------------------------------+
| date_add('2017-10-28', interval 10 day) |
+-----------------------------------------+
| 2017-11-07                              |
+-----------------------------------------+
1 row in set (0.01 sec)mysql> select date_sub('2017-10-1', interval 10 day);
+----------------------------------------+
| date_sub('2017-10-1', interval 10 day) |
+----------------------------------------+
| 2017-09-21                             |
+----------------------------------------+
1 row in set (0.00 sec)mysql> select datediff('2017-10-1', '2019-12-13');
+-------------------------------------+
| datediff('2017-10-1', '2019-12-13') |
+-------------------------------------+
|                                -803 |
+-------------------------------------+
1 row in set (0.00 sec)

案例:

mysql> create table tmp(-> id int primary key auto_increment,-> birthday date-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.01 sec)mysql> select * from tmp;
+----+------------+
| id | birthday   |
+----+------------+
|  1 | 2025-05-28 |
+----+------------+
1 row in set (0.00 sec)mysql> create table msg (-> id int primary key auto_increment,-> content varchar(30) not null,-> sendtime datetime-> );
Query OK, 0 rows affected (0.00 sec)mysql> insert into msg(content,sendtime) values('hello1', now());
Query OK, 1 row affected (0.00 sec)mysql> insert into msg(content,sendtime) values('hello2', now());
Query OK, 1 row affected (0.00 sec)mysql> select * from msg;
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello1  | 2025-05-28 11:02:16 |
|  2 | hello2  | 2025-05-28 11:02:21 |
+----+---------+---------------------+
2 rows in set (0.00 sec)mysql> select content,date(sendtime) from msg;
+---------+----------------+
| content | date(sendtime) |
+---------+----------------+
| hello1  | 2025-05-28     |
| hello2  | 2025-05-28     |
+---------+----------------+
2 rows in set (0.00 sec)mysql> select * from msg where date_add(sendtime, interval 2 minute) > now();
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello1  | 2025-05-28 11:02:16 |
|  2 | hello2  | 2025-05-28 11:02:21 |
+----+---------+---------------------+
2 rows in set (0.00 sec)

二,字符串函数

案例:

--获取emp表的ename列的字符集
mysql> select charset(ename) from emp;
+----------------+
| charset(ename) |
+----------------+
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
+----------------+
14 rows in set (0.00 sec)--要求显示score表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
mysql> select concat(name,'的语文分数是',chinese,'分,数学分数是',math,'分') as '分数' from score;
+------------------------------------------------------+
| 分数                                                 |
+------------------------------------------------------+
| 唐一的语文分数是134分,数学分数是98分                  |
| 孙二的语文分数是174分,数学分数是78分                  |
| 张三的语文分数是140分,数学分数是98分                  |
| 李四的语文分数是130分,数学分数是105分                 |
| 王五的语文分数是110分,数学分数是115分                 |
| 田七的语文分数是150分,数学分数是95分                  |
+------------------------------------------------------+
6 rows in set (0.00 sec)--求学生表中学生姓名占用的字节数
mysql> select length(name), name from score;
+--------------+--------+
| length(name) | name   |
+--------------+--------+
|            6 | 唐一   |
|            6 | 孙二   |
|            6 | 张三   |
|            6 | 李四   |
|            6 | 王五   |
|            6 | 田七   |
+--------------+--------+
6 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.00 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.04);
+----------------+
| ceiling(23.04) |
+----------------+
|             24 |
+----------------+
1 row in set (0.00 sec)--向下取整
mysql> select floor(23.7);
+-------------+
| floor(23.7) |
+-------------+
|          23 |
+-------------+
1 row in set (0.00 sec)--保留2位小数位数(小数四舍五入)
mysql> select format(12.3456,2);
+-------------------+
| format(12.3456,2) |
+-------------------+
| 12.35             |
+-------------------+
1 row in set (0.00 sec)--产生随机数
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.5332775512088812 |
+--------------------+
1 row in set (0.00 sec)

四,其他函数

--user() 查询当前用户
mysql> select user();
+--------+
| user() |
+--------+
| root@  |
+--------+
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)--password()函数,MySQL数据库使用该函数对用户加密
mysql> select password('root');
+-------------------------------------------+
| password('root')                          |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set, 1 warning (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)
http://www.xdnf.cn/news/970957.html

相关文章:

  • Python训练营-Day27-函数专题2:装饰器
  • Java如何权衡是使用无序的数组还是有序的数组
  • copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建联网大模型
  • QMC5883L的驱动
  • iview组件库:自定义方法去控制Tree树形数据的根节点与叶节点的关联性
  • Android Studio jetpack compose折叠日历日期选择器【折叠日历】
  • IOC和AOP
  • vue实现气泡词云图
  • FastJson的反序列化问题入门
  • Qt使用ODBC连接MySQL数据库
  • R7-1 显示Pascal三角形
  • 【代码模板】从huggingface加载tokenizer和模型,进行推理
  • idea64.exe.vmoptions配置
  • IDEA中配置HTML和Thymeleaf热部署的步骤
  • 蓝桥杯 2024 15届国赛 A组 儿童节快乐
  • 指针与引用参数传递的区别及内存操作流程详解
  • 分散电站,集中掌控,安科瑞光伏云平台助力企业绿色转型
  • 高通录像功能
  • Vim 光标移动命令总览
  • Java中高并发线程池的相关面试题详解
  • 《ZLMediaKit 全流程实战:从部署到 API 调用与前后端集成》
  • 用 LoRA 对 Qwen2.5-VL 模型进行SFT - FORCE_TORCHRUN=1
  • 条件运算符
  • error: src refspec master does not match any - Git
  • coze的基本使用
  • 从零开始搭建现代化 Monorepo 开发模板:TypeScript + Rollup + Jest + 持续集成完整指南
  • Git操作问题及解决方案-记录5
  • (十)学生端搭建
  • 【SQL学习笔记3】深入理解窗口函数的用法