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

MySQL 内置函数

1. 日期函数

函数名称描述
current_date()获取当前日期
current_time()获取当前时间
current_timestamp()获取当前时间戳
date(datetime)返回datetime参数的日期部分
date_add(date, interval d_value_type)date中添加日期或时间,interval后的数值单位可以是:year, minute, second, day
date_sub(date, interval d_value_type)date中减去日期或时间,interval后的数值单位可以是:year, minute, second, day
datediff(date1, date2)计算两个日期的差,单位是天
now()获取当前日期时间

获得年月日:日期

mysql> select current_date();
+--------------+
| current_date |
+--------------+
| 2025-08-01   |
+--------------+

获得时分秒:时间

mysql> select current_time();
+--------------+
| current_time |
+--------------+
| 20:15:34     |
+--------------+

获得时间戳:日期+时间

mysql> select current_timestamp();
+---------------------+
| current_timestamp   |
+---------------------+
| 2025-08-01 20:15:02 |
+---------------------+mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-08-01 20:17:26 |
+---------------------+

截取日期部分:我们需要确保输入的格式是符合要求的:

[年]-[月]-[日]“空格”[时]:[分]:[秒]

mysql> select date('1949-10-01 00:00:00');
+-----------------------------+
| date('1949-10-01 00:00:00') |
+-----------------------------+
| 1949-10-01                  |
+-----------------------------+

我们就可以实现函数嵌套的方式来时间日期的截取: 

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2025-08-01  |
+-------------+

在日期的基础上加日期

mysql> select date_add('2050-01-01', interval 10 day);
+-----------------------------------------+
| date_add('2050-01-01', interval 10 day) |
+-----------------------------------------+
| 2050-01-11                              |
+-----------------------------------------+mysql> select date_add(now(), interval 10 minute);
+-------------------------------------+
| date_add(now(), interval 10 minute) |
+-------------------------------------+
| 2025-08-01 20:36:12                 |
+-------------------------------------+

在日期的基础上减去时间

select date_sub('2017-10-1', interval 2 day);
+---------------------------------------+
| date_sub('2017-10-1', interval 2 day) |
+---------------------------------------+
| 2017-09-29 |
+---------------------------------------+

计算两个日期之间相差多少天:前者距离后者多少天了

select datediff('2017-10-10', '2016-9-1');
+------------------------------------+
| datediff('2017-10-10', '2016-9-1') |
+------------------------------------+
| 404 |
+------------------------------------+mysql> select datediff('2005-09-22', '2025-08-01');
+--------------------------------------+
| datediff('2005-09-22', '2025-08-01') |
+--------------------------------------+
|                                -7253 |
+--------------------------------------+
案例 - 1:

创建一张表,记录生日

mysql> create table tmp(-> id bigint primary key auto_increment,-> birthday date not null-> );
Query OK, 0 rows affected (0.00 sec)mysql> desc tmp;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id       | bigint(20) | NO   | PRI | NULL    | auto_increment |
| birthday | date       | NO   |     | NULL    |                |
+----------+------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

添加当前日期

mysql> insert into tmp (birthday) values ('2005-02-02');
Query OK, 1 row affected (0.00 sec)mysql> insert into tmp (birthday) values (now());
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> insert into tmp (birthday) values ('1980-01-01');
Query OK, 1 row affected (0.00 sec)mysql> select * from tmp;
+----+------------+
| id | birthday   |
+----+------------+
|  1 | 2005-02-02 |
|  2 | 2025-08-01 |
|  3 | 1980-01-01 |
+----+------------+

我们使用now(),这种时间戳类型的,不是纯纯的日期类型的,也是可以插入成功的,我们可以看成是隐式类型转化! 

不过我们还是尽量这么写 --- 让别人更加清楚:

mysql> insert into tmp (birthday) values (date(current_timestamp()));
Query OK, 1 row affected (0.00 sec)
案例 - 2:

我们在头条上看到一则新闻,想要发送个评论,一般就会有这几个信息:发送人,发送信息,发送时间,发送地址....这里就有一个重要的概念:发送时间!

创建一个留言表

mysql> create table msg(-> id bigint primary key auto_increment,-> content varchar(100) not null,-> sendtime datetime-> );
Query OK, 0 rows affected (0.01 sec)

插入数据

mysql> insert into msg (content, sendtime) values ("我喜欢这个博客/主,快点三连!(❤ ω❤ )", now());
Query OK, 1 row affected (0.00 sec)mysql> ^C
mysql> select * from msg;
+----+---------------------------------------------------------+---------------------+
| id | content                                                 | sendtime            |
+----+---------------------------------------------------------+---------------------+
|  1 | 我喜欢这个博客/主,快点三连!(❤ ω❤ )                    | 2025-08-01 20:56:56 |
+----+---------------------------------------------------------+---------------------+
1 row in set (0.00 sec)mysql> select date(sendtime) from msg;
+----------------+
| date(sendtime) |
+----------------+
| 2025-08-01     |
+----------------+
1 row in set (0.00 sec)

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

mysql> select content, sendtime from msg;
+---------------------------------------------------------+---------------------+
| content                                                 | sendtime            |
+---------------------------------------------------------+---------------------+
| 我喜欢这个博客/主,快点三连!(❤ ω❤ )                    | 2025-08-01 20:56:56 |
+---------------------------------------------------------+---------------------+
1 row in set (0.00 sec)

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

使用时间运算:

我们使用数学运算就是从发表评论的时间增加规定时间,超过了当前的时间就是在规定时间之内的!反着来,使用date_sub函数也是可以的! 

mysql> select * from msg where date_add(sendtime, interval 2 minute) > now();
Empty set (0.01 sec)mysql> select * from msg where date_add(sendtime, interval 10 minute) > now();
+----+---------------------------------------------------------+---------------------+
| id | content                                                 | sendtime            |
+----+---------------------------------------------------------+---------------------+
|  1 | 我喜欢这个博客/主,快点三连!(❤ ω❤ )                    | 2025-08-01 20:56:56 |
+----+---------------------------------------------------------+---------------------+
1 row in set (0.00 sec)

2. 字符串函数

函数名称描述
charset(str)返回字符串字符集
concat(string2 [, ...])连接字符串
instr(string, substring)返回substringstring中出现的位置,没有返回0
ucase(string2)转换成大写
lcase(string2)转换成小写
left(string2, length)string2中的左边起取length个字符
length(string)string的长度
replace(str, search_str, replace_str)str中用replace_str替换search_str
strcmp(string1, string2)逐字符比较两字符串大小
substring(str, position [, length])strposition开始,取length个字符
ltrim(string)去除前空格或后空格
rtrim(string)去除前空格或后空格
trim(string)去除前空格或后空格

创建了两个表:deptempdept 表用于存储部门信息,包括部门编号(deptno)、部门名称(dname)和地址(loc)。emp 表用于存储员工信息,包括员工编号(empno)、姓名(ename)、岗位(job)、直接领导编号(mgr)、雇佣日期(hiredate)、薪水(sal)、提成(comm)和部门编号(deptno)。emp 表中的 deptno 是一个外键,引用 dept 表的 deptno 字段。在 dept 表中插入了四个部门的数据,在 emp 表中插入了14条员工数据。这些数据包括员工的基本信息和他们在公司中的职位关系。 

# 创建表 dept
create table dept(deptno int primary key auto_increment, -- 部门编号dname varchar(14) ,	  -- 部门名字loc varchar(13)   -- 地址
) ;
# 给dept中插入四条数据
insert into dept values(10,'财务部','北京');
insert into dept values(20,'研发部','上海');
insert into dept values(30,'销售部','广州');
insert into dept values(40,'行政部','深圳');# 创建表emp
create table emp(empno int primary key auto_increment,-- 员工编号ename varchar(10), -- 员工姓名										-job varchar(9),	-- 岗位mgr int,	 -- 直接领导编号hiredate date, -- 雇佣日期,入职日期sal int, -- 薪水comm int,  -- 提成deptno int not null, -- 部门编号foreign key (deptno) references dept(deptno)
);# 给emp表插入14条数据
insert into emp values(7369,'刘一','职员',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'陈二','推销员',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'张三','推销员',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'李四','经理',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'王五','推销员',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'赵六','经理',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'孙七','经理',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'周八','分析师',7566,'1987-06-13',3000,null,20);
insert into emp values(7839,'吴九','总裁',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'郑十','推销员',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'郭十一','职员',7788,'1987-06-13',1100,null,20);
insert into emp values(7900,'钱多多','职员',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'大锦鲤','分析师',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'木有钱','职员',7782,'1983-01-23',1300,null,10);
mysql> select * from emp;
+-------+-----------+-----------+------+------------+------+------+--------+
| empno | ename     | job       | mgr  | hiredate   | sal  | comm | deptno |
+-------+-----------+-----------+------+------------+------+------+--------+
|  7369 | 刘一      | 职员      | 7902 | 1980-12-17 |  800 | NULL |     20 |
|  7499 | 陈二      | 推销员    | 7698 | 1981-02-20 | 1600 |  300 |     30 |
|  7521 | 张三      | 推销员    | 7698 | 1981-02-22 | 1250 |  500 |     30 |
|  7566 | 李四      | 经理      | 7839 | 1981-04-02 | 2975 | NULL |     20 |
|  7654 | 王五      | 推销员    | 7698 | 1981-09-28 | 1250 | 1400 |     30 |
|  7698 | 赵六      | 经理      | 7839 | 1981-05-01 | 2850 | NULL |     30 |
|  7782 | 孙七      | 经理      | 7839 | 1981-06-09 | 2450 | NULL |     10 |
|  7788 | 周八      | 分析师    | 7566 | 1987-06-13 | 3000 | NULL |     20 |
|  7839 | 吴九      | 总裁      | NULL | 1981-11-17 | 5000 | NULL |     10 |
|  7844 | 郑十      | 推销员    | 7698 | 1981-09-08 | 1500 |    0 |     30 |
|  7876 | 郭十一    | 职员      | 7788 | 1987-06-13 | 1100 | NULL |     20 |
|  7900 | 钱多多    | 职员      | 7698 | 1981-12-03 |  950 | NULL |     30 |
|  7902 | 大锦鲤    | 分析师    | 7566 | 1981-12-03 | 3000 | NULL |     20 |
|  7934 | 木有钱    | 职员      | 7782 | 1983-01-23 | 1300 | NULL |     10 |
+-------+-----------+-----------+------+------------+------+------+--------+
14 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)

根据字符串,得到编码格式! 

mysql> select charset('abcd');
+-----------------+
| charset('abcd') |
+-----------------+
| utf8            |
+-----------------+

获取编码格式 --- utf8 

要求显示dept表中的信息,显示格式:“XXX的编号是: XXX ,地点是在XXX”

mysql> select * from dept;
+--------+-----------+--------+
| deptno | dname     | loc    |
+--------+-----------+--------+
|     10 | 财务部    | 北京   |
|     20 | 研发部    | 上海   |
|     30 | 销售部    | 广州   |
|     40 | 行政部    | 深圳   |
+--------+-----------+--------+
4 rows in set (0.00 sec)mysql> select concat(dname, '的编号是: ', deptno, ' ,地点是在', loc) as '信息' from dept; 
+-----------------------------------------------+
| 信息                                          |
+-----------------------------------------------+
| 财务部的编号是: 10 ,地点是在北京              |
| 研发部的编号是: 20 ,地点是在上海              |
| 销售部的编号是: 30 ,地点是在广州              |
| 行政部的编号是: 40 ,地点是在深圳              |
+-----------------------------------------------+
4 rows in set (0.01 sec)

concat 就是连接字符串! 

mysql> select concat('a', 'b', 12, 0.1);
+---------------------------+
| concat('a', 'b', 12, 0.1) |
+---------------------------+
| ab120.1                   |
+---------------------------+
1 row in set (0.00 sec)

判断一个substr,是否包含在str中,如果存在,请返回位置,否则返回0!--- 下标从1开始:

mysql> select instr('adafsa1234dsfa', '1234');
+---------------------------------+
| instr('adafsa1234dsfa', '1234') |
+---------------------------------+
|                               7 |
+---------------------------------+
1 row in set (0.00 sec)mysql> select instr('adafsa1234dsfa', '12345');
+----------------------------------+
| instr('adafsa1234dsfa', '12345') |
+----------------------------------+
|                                0 |
+----------------------------------+
1 row in set (0.00 sec)

将字符串转大/小写:

mysql> select ucase('adsafbhDD1u109mKK');
+----------------------------+
| ucase('adsafbhDD1u109mKK') |
+----------------------------+
| ADSAFBHDD1U109MKK          |
+----------------------------+
1 row in set (0.00 sec)mysql> select lcase('ADdabda138y1863AS');
+----------------------------+
| lcase('ADdabda138y1863AS') |
+----------------------------+
| addabda138y1863as          |
+----------------------------+
1 row in set (0.00 sec)

从string中,从左取出n个元素: 

mysql> select left('123456',0);
+------------------+
| left('123456',0) |
+------------------+
|                  |
+------------------+
1 row in set (0.00 sec)mysql> select left('123456',3);
+------------------+
| left('123456',3) |
+------------------+
| 123              |
+------------------+
1 row in set (0.00 sec)mysql> select left('123456',11);
+-------------------+
| left('123456',11) |
+-------------------+
| 123456            |
+-------------------+
1 row in set (0.00 sec)

求员工表中员工姓名占用的字节数:length函数返回值的单位是字节!!!中文按照字符编码确定

mysql> SELECT length(ename) AS '长度', ename AS '姓名' FROM emp;
+--------+-----------+
| 长度   | 姓名      |
+--------+-----------+
|      6 | 刘一      |
|      6 | 陈二      |
|      6 | 张三      |
|      6 | 李四      |
|      6 | 王五      |
|      6 | 赵六      |
|      6 | 孙七      |
|      6 | 周八      |
|      6 | 吴九      |
|      6 | 郑十      |
|      9 | 郭十一    |
|      9 | 钱多多    |
|      9 | 大锦鲤    |
|      9 | 木有钱    |
+--------+-----------+
14 rows in set (0.00 sec)

EMP表中所有名字中有'一'的替换成'上官'

mysql> select replace(ename, '一', '上官') as '替换后的名字', ename as '名字' from emp;
+--------------------+-----------+
| 替换后的名字       | 名字      |
+--------------------+-----------+
| 刘上官             | 刘一      |
| 陈二               | 陈二      |
| 张三               | 张三      |
| 李四               | 李四      |
| 王五               | 王五      |
| 赵六               | 赵六      |
| 孙七               | 孙七      |
| 周八               | 周八      |
| 吴九               | 吴九      |
| 郑十               | 郑十      |
| 郭十上官           | 郭十一    |
| 钱多多             | 钱多多    |
| 大锦鲤             | 大锦鲤    |
| 木有钱             | 木有钱    |
+--------------------+-----------+
14 rows in set (0.00 sec)

逐字符比较两个字符串的大小: 

mysql> select strcmp('abcs', 'abc');
+-----------------------+
| strcmp('abcs', 'abc') |
+-----------------------+
|                     1 |
+-----------------------+
1 row in set (0.00 sec)mysql> select strcmp('abcs', 'abcdd');
+-------------------------+
| strcmp('abcs', 'abcdd') |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)mysql> select strcmp('abcs', 'abcsd');
+-------------------------+
| strcmp('abcs', 'abcsd') |
+-------------------------+
|                      -1 |
+-------------------------+
1 row in set (0.00 sec)mysql> select strcmp('abcs', 'abcs');
+------------------------+
| strcmp('abcs', 'abcs') |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.00 sec)

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

mysql> select substring(ename, 2, 2), ename from emp;
+------------------------+-----------+
| substring(ename, 2, 2) | ename     |
+------------------------+-----------+
| 一                     | 刘一      |
| 二                     | 陈二      |
| 三                     | 张三      |
| 四                     | 李四      |
| 五                     | 王五      |
| 六                     | 赵六      |
| 七                     | 孙七      |
| 八                     | 周八      |
| 九                     | 吴九      |
| 十                     | 郑十      |
| 十一                   | 郭十一    |
| 多多                   | 钱多多    |
| 锦鲤                   | 大锦鲤    |
| 有钱                   | 木有钱    |
| bc                     | abc刘一   |
| b刘                    | ab刘一    |
+------------------------+-----------+
16 rows in set (0.00 sec)

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

mysql> insert into emp values(8360,'Abc刘一','职员',7902,'1980-12-17',800,null,20);
Query OK, 1 row affected (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)) |
+----------------------------------------------------------+
| 刘一                                                     |
| 陈二                                                     |
| 张三                                                     |
| 李四                                                     |
| 王五                                                     |
| 赵六                                                     |
| 孙七                                                     |
| 周八                                                     |
| 吴九                                                     |
| 郑十                                                     |
| 郭十一                                                   |
| 钱多多                                                   |
| 大锦鲤                                                   |
| 木有钱                                                   |
| abc刘一                                                  |
| abc刘一                                                  |
| ab刘一                                                   |
+----------------------------------------------------------+
17 rows in set (0.00 sec)

去除字符串的前后导/前导/后置空格: 

mysql> select trim('   inini   ');
+---------------------+
| trim('   inini   ') |
+---------------------+
| inini               |
+---------------------+
1 row in set (0.00 sec)mysql> select length(trim('   inini   '));
+-----------------------------+
| length(trim('   inini   ')) |
+-----------------------------+
|                           5 |
+-----------------------------+
1 row in set (0.00 sec)mysql> select trim('   ini ni   ');
+----------------------+
| trim('   ini ni   ') |
+----------------------+
| ini ni               |
+----------------------+
1 row in set (0.00 sec)mysql> select ltrim("  mm  "), length(ltrim("  mm  ")) as '长度';
+-----------------+--------+
| ltrim("  mm  ") | 长度   |
+-----------------+--------+
| mm              |      4 |
+-----------------+--------+
1 row in set (0.00 sec)mysql> select rtrim("  mm  "), length(rtrim("  mm  ")) as '长度';
+-----------------+--------+
| rtrim("  mm  ") | 长度   |
+-----------------+--------+
|   mm            |      4 |
+-----------------+--------+
1 row in set (0.00 sec)

3. 数学函数

函数名称描述
abs(number)绝对值函数
bin(decimal_number)十进制转换二进制
hex(decimalNumber)十进制转换成十六进制
conv(number, from_base, to_base)进制转换
ceiling(number)向上去整
floor(number)向下去整
format(number, decimal_places)格式化,保留小数位数
hex(decimalNumber)转换成十六进制
rand()返回随机浮点数,范围 [0.0, 1.0)
mod(number, denominator)取模,求余

绝对值

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

十进制转换二进制:一般传入的浮点数会进行取整后运算,浮点数的机器码表示是比较麻烦的

mysql> select bin(10);
+---------+
| bin(10) |
+---------+
| 1010    |
+---------+
1 row in set (0.00 sec)mysql> select bin(-10);
+------------------------------------------------------------------+
| bin(-10)                                                         |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111110110 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> select bin(10.1);
+-----------+
| bin(10.1) |
+-----------+
| 1010      |
+-----------+
1 row in set (0.00 sec)mysql> select conv(10, 10, 2);
+-----------------+
| conv(10, 10, 2) |
+-----------------+
| 1010            |
+-----------------+
1 row in set (0.00 sec)mysql> select conv(-10, 10, 2);
+------------------------------------------------------------------+
| conv(-10, 10, 2)                                                 |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111110110 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> select conv(10.8, 10, 2);
+-------------------+
| conv(10.8, 10, 2) |
+-------------------+
| 1010              |
+-------------------+
1 row in set (0.00 sec)

十进制转换成十六进制:hex()浮点数进行四舍五入,使用conv()则是向下取整

mysql> select hex(11);
+---------+
| hex(11) |
+---------+
| B       |
+---------+
1 row in set (0.00 sec)mysql> select hex(-11);
+------------------+
| hex(-11)         |
+------------------+
| FFFFFFFFFFFFFFF5 |
+------------------+
1 row in set (0.00 sec)mysql> select hex(11.5);
+-----------+
| hex(11.5) |
+-----------+
| C         |
+-----------+
1 row in set (0.00 sec)mysql> select hex(11.4);
+-----------+
| hex(11.4) |
+-----------+
| B         |
+-----------+
1 row in set (0.00 sec)mysql> select conv(10.8, 10, 16);
+--------------------+
| conv(10.8, 10, 16) |
+--------------------+
| A                  |
+--------------------+
1 row in set (0.00 sec)mysql> select conv(10.2, 10, 16);
+--------------------+
| conv(10.2, 10, 16) |
+--------------------+
| A                  |
+--------------------+
1 row in set (0.00 sec)

向上取整:

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

向下取整:

这里补充一下,C语言是进行0向取整的,也就是去掉小数部分!!!

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

保留2位小数位数(小数四舍五入):进行精度截取

mysql> select format(12.3456, 3);
+--------------------+
| format(12.3456, 3) |
+--------------------+
| 12.346             |
+--------------------+
1 row in set (0.00 sec)

产生随机数: [0.0, 1.0)

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

取模,求余:结果=前%后 

mysql> select mod(10, 3);
+------------+
| mod(10, 3) |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)mysql> select mod(-10, -3);
+--------------+
| mod(-10, -3) |
+--------------+
|           -1 |
+--------------+
1 row in set (0.00 sec)mysql> select mod(10, -3);
+-------------+
| mod(10, -3) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

4. 其它函数

user() 查询当前用户

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

md5(str)对一个字符串进行md5摘要,就是进行哈希算法,摘要后得到一个32位字符串:可用于密码加密,但是这个效果并不是很好

select md5('admin');
+----------------------------------+
| md5('admin') |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+

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

select database();

password()函数,MySQL数据库使用该函数对用户加密:针对密码进行加密 --- 这是比较好的选择!

select password('root');
+-------------------------------------------+
| password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+

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

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

5. 实战OJ

  • 牛客:查找字符串'10,A,B' 中逗号','出现的次数cnt

http://www.dtcms.com/a/311463.html

相关文章:

  • npm安装下载慢问题
  • 离线安装docker和docker-compose
  • 【人工智能agent】--服务器部署PaddleX 的 印章文本识别模型
  • JVM 调优中JVM的参数如何起到调优动作?具体案例,G1GC垃圾收集器参数调整建议
  • Junit5+Maven+RestAssured+Allure接口自动化框架
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • MSQL-聚簇索引与非聚簇索引的比较
  • k8s的pod的YAML问题
  • 公共卫生场景下漏检率↓76%:陌讯动态特征融合算法在口罩识别中的实战解析
  • 7月销售超5万辆,零跑汽车再创单月历史新高
  • 开源列式分布式数据库clickhouse
  • SpringBoot 启动富文本文字更改
  • .NET 中,Process.Responding 属性用于检查进程的用户界面是否正在响应
  • Linux性能监控与调优全攻略
  • SpringCloud微服务
  • 1分钟临时共享空间在线小工具实现
  • 存储成本深度优化:冷热分层与生命周期管理——从视频平台年省200万实践解析智能存储架构
  • Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • SM2国密算法的大数运算原理详解
  • (吃饭)质数时间
  • 防御保护综合案例
  • 二分查找:高效搜索有序数组
  • 【论文笔记】Multi-Behavior Graph Neural Networks for Recommender System
  • 深度学习loss总结(二)
  • [硬件电路-116]:模拟电路 - 信号处理电路 - 程控增益放大器
  • Batch Normalization(BN):深度学习中的“训练加速器”与实践指南
  • LLM Prompt与开源模型资源(3)如何写一个好的 Prompt
  • 【转】大模型安全治理的现状与展望
  • 【REACT18.x】使用vite创建的项目无法启动,报错TypeError: crypto.hash is not a function解决方法
  • SpringCloud实战:机器人对战系统架构