【MySQL】内置函数详解

【MySQL】内置函数详解

  • 日期函数
  • 字符串函数
  • 数学函数
  • 加密函数与其它

日期函数

在这里插入图片描述

--获取当前日期
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-07-09     |
+----------------+
--获取当前时间
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 09:42:21       |
+----------------+
--获取当前时间戳
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-07-09 09:42:27 |
+---------------------+
--获取当前日期时间
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2023-07-09 09:43:07 |
+---------------------+
--从日期时间中提取日期
mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2023-07-09  |
+-------------+
--在当前日期基础上增加10天
mysql> select date_add(now(),interval 10 day);
+---------------------------------+
| date_add(now(),interval 10 day) |
+---------------------------------+
| 2023-07-19 09:52:56             |
+---------------------------------+
--在当前日期基础上减少10天
mysql> select date_sub(now(),interval 10 day);
+---------------------------------+
| date_sub(now(),interval 10 day) |
+---------------------------------+
| 2023-06-29 09:53:04             |
+---------------------------------+
--获取时间差
mysql> select datediff(date(now()),'2002-05-01');
+------------------------------------+
| datediff(date(now()),'2002-05-01') |
+------------------------------------+
|                               7739 |
+------------------------------------+

综合案列

--创建msg表
mysql> create table msg (
id int primary key auto_increment,
content varchar(30) not null,
sendtime datetime
);
--插入两条数据
mysql> insert into msg(content,sendtime) values('天街小雨润如酥', now());
mysql> insert into msg(content,sendtime) values('草色遥看近却无', now());
--显示所有留言信息,发布日期只显示日期,不用显示时间
mysql> select * from msg;
+----+-----------------------+---------------------+
| id | content               | sendtime            |
+----+-----------------------+---------------------+
|  1 | 天街小雨润如酥        | 2023-07-09 10:20:25 |
|  2 | 草色遥看近却无        | 2023-07-09 10:20:36 |
+----+-----------------------+---------------------+--查询在10分钟内发布的帖子
mysql> select * from msg where date_add(sendtime,interval 10  minute)>now();
+----+-----------------------+---------------------+
| id | content               | sendtime            |
+----+-----------------------+---------------------+
|  1 | 天街小雨润如酥        | 2023-07-09 10:20:25 |
|  2 | 草色遥看近却无        | 2023-07-09 10:20:36 |
+----+-----------------------+---------------------+
mysql> select * from msg where date_sub(now(),interval 10 minute)<sendtime;
+----+-----------------------+---------------------+
| id | content               | sendtime            |
+----+-----------------------+---------------------+
|  1 | 天街小雨润如酥        | 2023-07-09 10:20:25 |
|  2 | 草色遥看近却无        | 2023-07-09 10:20:36 |
+----+-----------------------+---------------------+

在这里插入图片描述

字符串函数

在这里插入图片描述

1.获取msg表的content列的字符集
2.拼接显示stu表中的信息
3.求学生表中学生姓名占用的字节数
length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关,utf-8是三个字节)
4.将stu表中所有数学成绩中有8的替换成’6’
5.截取stu表中name字段的第二个到第三个字符
6.以首字母小写的方式显示所有员工的姓名

mysql> select charset(content) from msg;
+------------------+
| charset(content) |
+------------------+
| utf8             |
| utf8             |
+------------------+mysql> select concat('姓名:',name,'总分:',chinese+math+english,'语文',chinese,'数学',math,'英语',english) msg from stu;
+--------------------------------------------------------+
| msg                                                    |
+--------------------------------------------------------+
| 姓名:唐三藏总分:288语文134数学98英语56                |
| 姓名:猪悟能总分:364语文176数学98英语90                |
| 姓名:曹孟德总分:297语文140数学90英语67                |
| 姓名:刘玄德总分:270语文110数学115英语45               |
| 姓名:孙权总分:291语文140数学73英语78                  |
| 姓名:宋公明总分:275语文150数学95英语30                |
+--------------------------------------------------------+mysql> select name,length(name) from stu;
+-----------+--------------+
| name      | length(name) |
+-----------+--------------+
| 唐三藏    |            9 |
| 猪悟能    |            9 |
| 曹孟德    |            9 |
| 刘玄德    |            9 |
| 孙权      |            6 |
| 宋公明    |            9 |
+-----------+--------------+
mysql> select math,replace(math,'8','6') from stu;
+------+-----------------------+
| math | replace(math,'8','6') |
+------+-----------------------+
|   98 | 96                    |
|   98 | 96                    |
|   90 | 90                    |
|  115 | 115                   |
|   73 | 73                    |
|   95 | 95                    |
+------+-----------------------+
6 rows in set (0.00 sec)
--截取stu表中name字段的第二个到第三个字符
mysql> select name,substring(name,2,2) from stu;
+-----------+---------------------+
| name      | substring(name,2,2) |
+-----------+---------------------+
| 唐三藏    | 三藏                |
| 猪悟能    | 悟能                |
| 曹孟德    | 孟德                |
| 刘玄德    | 玄德                |
| 孙权      ||
| 宋公明    | 公明                |
+-----------+---------------------+
--以首字母小写的方式显示所有员工的姓名
mysql> select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;
+--------+--------------------------------------------------------+
| ename  | concat(lcase(substring(ename,1,1)),substring(ename,2)) |
+--------+--------------------------------------------------------+
| SMITH  | sMITH                                                  |
| ALLEN  | aLLEN                                                  |
| WARD   | wARD                                                   |
| JONES  | jONES                                                  |
| MARTIN | mARTIN                                                 |
| BLAKE  | bLAKE                                                  |
| CLARK  | cLARK                                                  |
| SCOTT  | sCOTT                                                  |
| KING   | kING                                                   |
| TURNER | tURNER                                                 |
| ADAMS  | aDAMS                                                  |
| JAMES  | jAMES                                                  |
| FORD   | fORD                                                   |
| MILLER | mILLER                                                 |
+--------+--------------------------------------------------------+

数学函数

在这里插入图片描述

--取绝对值
mysql> select abs(10.2);
+-----------+
| abs(10.2) |
+-----------+
|      10.2 |
+-----------+
--取绝对值
mysql> select abs(-10.5);
+------------+
| abs(-10.5) |
+------------+
|       10.5 |
+------------+
--转为二进制
mysql> select bin(5);
+--------+
| bin(5) |
+--------+
| 101    |
+--------+
--对小数转二进制会自动取整
mysql> select bin(5.2);
+----------+
| bin(5.2) |
+----------+
| 101      |
+----------+--转化为16进制
mysql> select hex(10);
+---------+
| hex(10) |
+---------+
| A       |
+---------+
--将十进制16转为2进制
mysql> select conv(16,10,2);
+---------------+
| conv(16,10,2) |
+---------------+
| 10000         |
+---------------+--向上取整
mysql> select ceiling(5.2);
+--------------+
| ceiling(5.2) |
+--------------+
|            6 |
+--------------+
--向上取整
mysql> select ceiling(-5.2);
+---------------+
| ceiling(-5.2) |
+---------------+
|            -5 |
+---------------+
----向下取整
mysql> select floor(-5.2);
+-------------+
| floor(-5.2) |
+-------------+
|          -6 |
+-------------+
----向下取整
mysql> select floor(5.2);
+------------+
| floor(5.2) |
+------------+
|          5 |
+------------+--保留2位小数位数(小数四舍五入)
mysql> select format(12.3569,2)-> ;
+-------------------+
| format(12.3569,2) |
+-------------------+
| 12.36             |
+-------------------+--生成[0.0,10.0)之间的随机数
mysql> select rand()*10;
+-------------------+
| rand()*10         |
+-------------------+
| 3.120866942332002 |
+-------------------+
mysql> select format(rand()*10,2);
+---------------------+
| format(rand()*10,2) |
+---------------------+
| 8.73                |
+---------------------+
--取模
mysql> select mod(5,2);
+----------+
| mod(5,2) |
+----------+
|        1 |
+----------+

加密函数与其它

user() 查询当前用户
md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
对于一个加密后的数据,想要查询它,也需要配套使用

insert into user (name,password) values ('wmh',md5('123'));
select * from user where password=md5('123');
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
mysql> select md5('root');
+----------------------------------+
| md5('root')                      |
+----------------------------------+
| 63a9f0ea7bb98050796b649e85481845 |
+----------------------------------+
--database()显示当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| scott      |
+------------+
--password()函数,MySQL数据库使用该函数对用户加密
mysql> select password('root');
+-------------------------------------------+
| password('root')                          |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+--ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
mysql> select ifnull(null,10);
+-----------------+
| ifnull(null,10) |
+-----------------+
|              10 |
+-----------------+
mysql> select ifnull(20,null);
+-----------------+
| ifnull(20,null) |
+-----------------+
|              20 |
+-----------------+

在这里插入图片描述
解题思路: length(string) 统计出所有字符串的长度;减去没有逗号的长度,就是逗号的长度,这里需要用 '‘替换’,'了

select id,length(string)-length(replace(string,',','')) from strings;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15236.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思&#xff0c;默认情况下是Not watching&#xff0c;当选择Watch后&#xff0c;你会收到这个GitHub项目的所有动态。比如&#xff1a;有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…

wincc项目中VBS脚本密码的研究

文章目录 前言一、分析二、验证及使用 前言 很多时候我们在wincc中写全局脚本时会为自己的脚本添加密码&#xff0c;但很久很久以后再想修改密码忘记了怎么办呢。 一、分析 经过分析v7.0,v7.3,v7.5密码稍有不同&#xff0c;但同样最多可以设置21位的密码。 二、验证及使用

Nginx+Tomcat负载均衡(反向代理)、动静分离集群

NginxTomcat负载均衡、动静分离 一、正向代理与反向代理二、负载均衡--with-stream #启用 stream模块&#xff0c;提供4层调度 一、正向代理与反向代理 Nginx:正向代理&#xff08;知道目标服务器&#xff09; 反向代理&#xff08;不知道目标服务器&#xff09; Nginx配置反…

基于SSM的在线医疗服务系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

数据库的备份与恢复

文章目录 前言备份恢复概述故障的种类数据库备份数据库的恢复日志文件 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 备份与恢复是为了防止数据库运行出现故障时造成数据丢失、损坏的一个重要手段 提示&#xff1a;以下是本篇文章正文内容&#xff0…

USB协议总结

1、简介 在了解USB协议之前&#xff0c;先了解下该总线协议出现的背景。在USB总线出现之前&#xff0c;计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接&#xff0c;不同设备的接口不能互用&#xff0c;扩展性很差。每次插拔设备都要关闭计算机&#xff0c;不支持热插…

【MATLAB第54期】基于LSTM长短期记忆网络的多输入多输出滑动窗口回归预测模型

【MATLAB第54期】基于LSTM长短期记忆网络的多输入多输出滑动窗口回归预测模型 往期第13期已实现多输入单输出滑动窗口回归预测 本次在此代码基础上&#xff0c;新增多输出滑动窗口功能。 多输入单输出滑动窗口回归预测 一、实现效果 往期文章提到了对单列时间序列数据进行滑…

LVS - DR群集

文章目录 一、DR模式 LVS负载均衡群集1.数据包流向分析 二、LVS-DR模式的特点三、LVS-DR中的ARP问题四、DR模式 LVS负载均衡群集部署1.环境准备2.配置负载调度器&#xff08;192.168.40.104&#xff09;2.1.配置虚拟 IP 地址&#xff08;VIP&#xff1a;192.168.40.180&#xf…

(css)文字与底部对齐

(css)文字与底部对齐 修改前&#xff1a; 修改后&#xff1a; 代码&#xff1a; .AITip {height: 11%;color: #01ffff;font-size: 24px;//主要属性display: flex;justify-content: center;align-items: flex-end;line-height: 1; }解决参考&#xff1a;https://blog.csdn.n…

微信小程序之Image那些事

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用场景二、使用方式1.动态读取image大小2.动态设置style3.动态赋值 总结 前言 小程序中 Image使用频率是非常高的 不同场景下 Image使用的属性也不一样 …

【Linux】关于Linux系统挂载大于2TB磁盘的问题

之前在Linux系统挂载文件系统的时候&#xff0c;我已经习惯了使用 fdisk 命令来对磁盘进行分区。fdisk 常用的几个指令有&#xff1a; m 显示命令帮助菜单&#xff1b; n 创建新的分区&#xff1b; p 显示分区信息&#xff1b; t 修改分区类型&#xff08;一般设置为8e&…

Stable Diffusion WebUI 集成 LoRA模型,给自己做一张壁纸 Ubuntu22.04 rtx2060 6G

LoRA概念 LoRA的全称是LoRA: Low-Rank Adaptation of Large Language Models&#xff0c;可以理解为stable diffusion&#xff08;SD)模型的一种插件&#xff0c;和hyper-network&#xff0c;controlNet一样&#xff0c;都是在不修改SD模型的前提下&#xff0c;利用少量数据训…