前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【MySql】内置函数

【MySql】内置函数

作者头像
平凡的人1
发布2023-10-15 12:29:57
发布2023-10-15 12:29:57
22900
代码可运行
举报
运行总次数:0
代码可运行

日期函数

废话不多说,我们直接来看相关日期函数:

日期:年月日

时间:时 分 秒

代码语言:javascript
代码运行次数:0
复制
-- 获得年月日:
select current_date();

-- 获得时分秒:
select current_time();

--获得时间戳:
select current_timestamp();

在日期的基础上加日期:

代码语言:javascript
代码运行次数:0
复制
select date_add('2017-10-28', interval 10 day);

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

代码语言:javascript
代码运行次数:0
复制
select date_sub('2017-10-1', interval 2 day);

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

代码语言:javascript
代码运行次数:0
复制
select datediff('2023-10-10','2023-6-15');
  • 案例

创建一张表,记录生日:

代码语言:javascript
代码运行次数:0
复制
mysql> create table tmp(
    -> id bigint primary key auto_increment,
    -> birthday date not null
    -> );
Query OK, 0 rows affected (0.03 sec)

插入日期:

代码语言:javascript
代码运行次数:0
复制
insert into tmp (birthday) values ('1999-01-01');

创建一个留言表:

代码语言:javascript
代码运行次数:0
复制
mysql> create table msg(
    -> id bigint primary key auto_increment,
    -> content varchar(100) not null,
    -> sendtime datetime
    -> );
Query OK, 0 rows affected (0.06 sec)![image-20230615231123122](https://bloggggg.oss-cn-guangzhou.aliyuncs.com/img/202306152311154.png)

插入数据:

代码语言:javascript
代码运行次数:0
复制
insert into msg (content,sendtime) values ('好好学习,天天向上',now());

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

如何确认表中的数据是2min以内的:

代码语言:javascript
代码运行次数:0
复制
select content,sendtime from msg where sendtime > date_sub(now(),interval 2 minute);

字符串函数

直接举例子:

  • 获取emp表的sal列的字符集
代码语言:javascript
代码运行次数:0
复制
select charset(sal) from emp;
  • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
代码语言:javascript
代码运行次数:0
复制
select concat('考生姓名: ',name,'总分: ',chinese+math+english,',语文成绩: ',chinese,',',math'数学成绩: ,',math,',英语成绩: ',english) msg from exam_result;
  • 求学生表中学生姓名占用的字节数
代码语言:javascript
代码运行次数:0
复制
select name,length(name) from exam_result;

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)

  • 将EMP表中所有名字中有S的替换成’上海’
代码语言:javascript
代码运行次数:0
复制
select ename,replace(ename,'S','上海') from emp;
  • 截取EMP表中ename字段的第二个到第三个字符
代码语言:javascript
代码运行次数:0
复制
select substring(ename,2,2), ename from emp;
  • 以首字母小写的方式显示所有员工的姓名
代码语言:javascript
代码运行次数:0
复制
select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;

数学函数

  • 绝对值
代码语言:javascript
代码运行次数:0
复制
select abs(-100.2);
  • 十进制转换成二进制
代码语言:javascript
代码运行次数:0
复制
select bin(10);
  • 向上取整
代码语言:javascript
代码运行次数:0
复制
select ceiling(23.11);
-- 24 
  • 向下取整
代码语言:javascript
代码运行次数:0
复制
select floor(23.99);

-- 23
  • 保留2位小数位数(小数四舍五入)
代码语言:javascript
代码运行次数:0
复制
select format(12.3456,2);

-- 12.35
  • 产生随机数
代码语言:javascript
代码运行次数:0
复制
select rand();
  • 取模
代码语言:javascript
代码运行次数:0
复制
select mod(10,3);

-- 1

其他函数

  • user() 查询当前用户
代码语言:javascript
代码运行次数:0
复制
select user();
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

比如我们对一个表插入数据时,涉及到密码,可以用到md5:

代码语言:javascript
代码运行次数:0
复制
insert into user (name,password) values ('李四',md5('helloworld'));
  • database()显示当前正在使用的数据库
代码语言:javascript
代码运行次数:0
复制
select database();
  • password()函数,MySQL数据库使用该函数对用户加密
代码语言:javascript
代码运行次数:0
复制
select password('12233344455');
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
代码语言:javascript
代码运行次数:0
复制
select ifnull(null,10) result;

OJ题目

SQL245 查找字符串中逗号出现的次数

描述

现有strings表如下:

id指序列号;

string列中存放的是字符串,且字符串中仅包含数字、字母和逗号类型的字符。

请你统计每个字符串中逗号出现的次数cnt。

以上例子的输出结果如下:

示例1

输入:

代码语言:javascript
代码运行次数:0
复制
drop table if exists strings;
CREATE TABLE strings(
id int(5)  NOT NULL PRIMARY KEY,
string  varchar(45) NOT NULL
);
insert into strings values
(1, '10,A,B'),
(2, 'A,B,C,D'),
(3, 'A,11,B,C,D,E');

输出:

代码语言:javascript
代码运行次数:0
复制
1|2
2|3
3|5

先把逗号替换成空格,然后总的个数减去替换之后的个数自然就是逗号的个数了:

代码语言:javascript
代码运行次数:0
复制
select id,length(string)- length(replace(string,",","")) from strings;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日期函数
  • 字符串函数
  • 数学函数
  • 其他函数
  • OJ题目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档