【MySQL】内置函数详解

news2024/12/26 13:31:19

【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.coloradmin.cn/o/734072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGLM2-6b本地部署

chatglm2-6m模型 git 地址 https://github.com/THUDM/ChatGLM2-6B 模型百度网盘地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1-LFcPB0H23RSpTKOECsjxw?pwd5e3d 提取码&#xff1a;5e3d 1 模型简介 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#…

【高级程序设计语言C++】类与对象

2.1类的定义2.1.1 类的两种定义方式2.1.2 类的访问限定符2.1.3 C中的struct和class的区别是什么&#xff1f;2.1.4 类的实例化2.1.5 计算类对象的大小2.1.6 this指针 2.2 类的6个默认成员函数2.2.1 构造函数2.2.2 析构函数2.2.3 拷贝构造函数2.2.4 赋值运算符重载2.2.5 取地址及…

Java新特性:Lambda表达式

Java新特性&#xff1a;Lambda表达式 Lambda 表达式&#xff08;Lambda expression&#xff09;&#xff0c;也可称为闭包&#xff08;Closure&#xff09;&#xff0c;是 Java&#xff08;SE&#xff09;8 中一个重要的新特性。Lambda 表达式允许我们通过表达式来代替功能接口…

第五章——循环和关系表达式

for循环 很多情况下都需要程序执行重复的任务 #include<iostream> using namespace std; int main() {int i;for (i 0; i < 5; i){cout << "C knows loop.\n";}cout << "C knows when to stop.\n";return 0; } for循环的组成部分 …

107、基于51单片机多路无线调频对讲机系统设计(程序+原理图+PCB源文件+参考论文+外文翻译+任务书+开题报告+硬件设计资料+元器件清单等)

摘 要 对讲机作为短距离通信和移动调度指挥的重要工具,在社会各个行业都有广泛的应用。尤其是随着数字电路技术的发展&#xff0c;新型的对讲机无论在外型还是性能上相对传统的模拟对讲机都有了长足的进步。对讲机主要包含需要基站支持的集群对讲机和常规无中心对讲机两种&…

深度理解 JAVA序列化

前言 相信大家日常开发中&#xff0c;经常看到Java对象“implements Serializable”。那么&#xff0c;它到底有什么用呢&#xff1f;本文从以下几个角度来解析序列这一块知识点~ 什么是Java序列化&#xff1f;为什么需要序列化&#xff1f;序列化用途Java序列化常用API序列化…

Android 热修复一

一、什么是热修复&#xff1f; 在我们应用上线后出现bug需要及时修复时&#xff0c;不用再发新的安装包&#xff0c;只需要发布补丁包&#xff0c;在客户无感知下修复掉bug。 实现效果&#xff1a; Demo源码&#xff1a; https://gitee.com/sziitjim/hotfix 二、怎么进行热修…

极速上手k8s,Kubernetes 从入门到摸鱼系列-理论篇

1. 引言&#x1f44b; 大家好&#xff0c;我是比特桃&#xff01;随着微服务架构越来越流行&#xff0c;大规模的微服务容器编排成了一件具有挑战的事情。在这次容器化云原生的发展中&#xff0c;Docker 成了容器化的赢家&#xff0c;而 Kubernetes 则成为了容器编排的赢家。k…

「已解决」 模块““umi“” ““@umijs/max“” 没有导出的成员“useRequest” “request” 问题的所有方法汇总

背景 使用 Umi 搭建项目时候有的时候会出现这种错误&#xff0c;模块““umi”” ““umijs/max”” 没有导出的成员“useRequest” “request”。 解决 tsconfig.json "paths": {"/*": ["src/*"],"/*": ["./src/.umi/*"…

用JShaman本地部署版,加密2.7MB的Webpack生成的JS文件

JShaman是知名的JS代码保护平台。在线使用&#xff0c;一键混淆加密&#xff0c;无需注册、无需登录。可免费用&#xff0c;也有商业服务&#xff1b;有在线使用的SAAS平台网站&#xff0c;也有本地部署版。很方便、很强大&#xff0c;很专业。 今天&#xff0c;测试使用JSham…

unordered_map模拟实现|STL源码剖析系列|开散列

博主很久没有更新过STL源码剖析这个系列的文章了&#xff0c;主要是因为大部分STL常用的容器&#xff0c;博主都已经发过文章了&#xff0c;今天博主带着大家把哈希表也模拟实现一下。 前言 那么这里博主先安利一下一些干货满满的专栏啦&#xff01; 手撕数据结构https://blo…

点云最小外包矩形计算

1、原理介绍 一簇点云的最小外包矩形&#xff08;Minimum Bounding Rectangle&#xff0c;MBR&#xff09;&#xff0c;是指用一个矩形将该簇点云框起来&#xff0c;所有点云数据在矩形框内。如下图所示为一个矩形框刚好将点云数据全部包围。 下面给出一种基于最大重叠度的最小…

[工业互联-19]:如何在QT中增加SOEM主站

目录 第1章 基本步骤 第2章 详细步骤 2.1.QT安装 2.2.VS安装 2.3.Win10 Debuggers 2.4.QT配置 2.5. SOEM移植 &#xff08;&#xff11;&#xff09;lib库生成 &#xff08;2&#xff09;文件移植: 文件整理 第1章 基本步骤 要在QT中添加SOEM主站功能&#xff0c;您需…

用OpenCV创建一张灰度黑色图像并设置某一列为白色

这段代码首先创建了一个400行600列的单通道灰度图像。然后,它遍历图像中的每个像素。如果像素位于列索引为30的列中,则将该像素的值设置为255。在灰度图像中,0表示黑色,255表示白色。因此,这段代码将图像的第30列设置为白色。 在 OpenCV 中,cv::Mat 构造函数的调用 cv::…

【算法 -- LeetCode】(13)罗马数字转整数

1、题目 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

哈希表和字符串专题1—205. 同构字符串 1002. 查找共用字符 925. 长按键入 844.比较含退格的字符串 C++实现

文章目录 205. 同构字符串1002. 查找共用字符925. 长按键入844.比较含退格的字符串栈模拟双指针 205. 同构字符串 class Solution { public:bool isIsomorphic(string s, string t) {unordered_map<char, char> map1;unordered_map<char, char> map2;for(int i0, j…

AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成

Lora攻略-实战萌宠图片生成 写在前面的话一&#xff1a;准备二、Lora作用1.AI模特2.炼衣服Lora3.改变画风/画面背景Lora模型究竟是什么&#xff1f; 三、如何炼制自己的Lora模型&#xff1f;四、炼丹前的准备&#xff08;**下载整合包**&#xff09;五、选择合适的大模型六、高…

管理类联考——逻辑——记忆篇——数字编码——公式

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

MySQL练习题(2)

创建如下员工标表 插入数据 1-- 按员工编号升序排列不在10号部门工作的员工信息 2-- 查询姓名第二个字母不是A且薪水大于1000元的员工信息&#xff0c;按薪水降序排列 4-- 求每个部门的平均薪水 5-- 求每个部门的最高薪水 6-- 求每个部门…

Coverity 2021.9 for win Coverity 2022.6 for linux

Coverity是一款快速、准确且高度可扩展的静态分析 (SAST) 解决方案&#xff0c;可帮助开发和安全团队在软件开发生命周期 (SDLC) 的早期解决安全和质量缺陷&#xff0c;跟踪和管理整个应用组合的风险&#xff0c;并确保符合安全和编码标准。Coverity 是一款精确的综合静态分析与…