【MySQL函数】掌握这些常用函数,让你的数据库操作如虎添翼!

news2024/12/25 23:55:41

目录

强制走索引

字符串函数

通配符

CONCAT:连接两个或多个字符串

LENGTH:返回字符串的长度

LOWER:将字符串转换为小写

UPPER:将字符串转换为大写

TRIM:删除字符串开头和结尾的空格

字符串转化为number

替换字符串

截取字符串

SUBSTRING:返回字符串的子串

SUBSTR

LEFT和RIGHT

SUBSTRING_INDEX

数值函数

SUM:计算指定列的总和

AVG:计算指定列的平均值

MAX:查找指定列的最大值

MIN:查找指定列的最小值

COUNT:计算指定列的行数

日期和时间函数

NOW:返回当前日期和时间

DATE:返回日期部分

TIME:返回时间部分

YEAR:返回年份部分

MONTH:返回月份部分

DAY:返回天数部分

条件函数

IF:根据条件返回不同的值

CASE:在查询中执行条件逻辑

聚合函数:

GROUP BY:根据指定的列对结果进行分组

HAVING:筛选分组后的结果

ORDER BY:按指定的列对结果进行排序

LIMIT:限制返回的行数

其他函数:

MD5:计算字符串的MD5哈希值

RAND:生成随机数

ROUND:对数值进行四舍五入

CEILING:向上取整

FLOOR:向下取整

EXISTS()


强制走索引

SELECT * FROM user u force index(idx_user_id_update_time) where u.id=100 order by u.update_time

字符串函数

通配符

 %通配符,_占位符

and order_no like '%1_'

匹配倒数第二位是1的任意订单号

CONCAT:连接两个或多个字符串

select CONCAT("123-", 456, '-ABC');
...where name like concat('%', #{param.name,jdbcType=VARCHAR}, '%');

 

LENGTH:返回字符串的长度

select LENGTH('123456');

 

LOWER:将字符串转换为小写

select LOWER('ABCoOpP');

 

UPPER:将字符串转换为大写

select UPPER('abcqwer');

 

TRIM:删除字符串开头和结尾的空格

select TRIM(' abcq wer ');

字符串转化为number

在MySQL中,可以使用CASTCONVERT函数将字符串转换为数字。下面是使用这两个函数的示例:

使用CAST函数:

SELECT CAST('1234' AS SIGNED) AS number;

使用CONVERT函数:

SELECT CONVERT('1234', SIGNED) AS number;

ps 请确保字符串能够正确地转换为数字,否则可能会导致错误。

替换字符串

在MySQL中,可以使用REPLACE函数来替换字符串。REPLACE函数接受三个参数:原始字符串、要查找的字符串和要替换的字符串。

SELECT REPLACE('Hello, World!', 'World', 'Universe');

这将输出Hello, Universe!,它将原始字符串中的World替换为Universe

还可以将REPLACE函数与列名一起使用,以在数据库表中替换字符串。例如,假设您有一个名为users的表,其中包含一个名为email的列,您可以使用以下语句将所有电子邮件地址中的"old.com"替换为"new.com":

UPDATE users SET email = REPLACE(email, 'old.com', 'new.com');

这将更新users表中的所有行,将电子邮件地址中的"old.com"替换为"new.com"。

请注意,REPLACE函数是大小写敏感的。如果要执行不区分大小写的替换操作,可以使用REPLACE函数之前先使用LOWERUPPER函数将字符串转换为小写或大写。

截取字符串

SUBSTRING:返回字符串的子串

select SUBSTRING('123456', 3);
-- 3456
select SUBSTRING('123456', 3, 2);
-- 34

SUBSTR

SELECT SUBSTR('Hello World', 2, 5);
--<ello > 

# 这里的SUBSTR函数中,第一个参数是待截取字符串,第二个参数是开始截取的位置,第三个参数是截取的长度。根据上面的语句,输出结果为“ello ”。

LEFT和RIGHT

LEFT(str,length);

  • str是要提取子字符串的字符串。
  • length是一个正整数,指定将从左边返回的字符数。
LEFT函数和RIGHT函数

SELECT LEFT('Hello World', 5);
SELECT RIGHT('Hello World', 5);

LEFT函数从字符串的左侧开始截取指定长度的字符;而RIGHT函数从字符串的右侧开始截取指定长度的字符。
因此第一个语句输出结果为“Hello”,第二个语句输出结果为“World”。

SUBSTRING_INDEX


SELECT SUBSTRING_INDEX('www.baidu.com', '.', 1);
SELECT SUBSTRING_INDEX('www.baidu.com', '.', 2);

这里的SUBSTRING_INDEX函数用于按指定分隔符“.”截取字符串,并且可以指定截取第几个分隔符之前或之后的内容。第一个语句输出结果为“www”,第二个语句输出结果为“www.baidu”。

数值函数

SUM:计算指定列的总和

SELECT SUM(trade_amount) FROM order;

AVG:计算指定列的平均值

SELECT AVG(trade_amount) FROM order;

MAX:查找指定列的最大值

SELECT MAX(trade_amount) FROM order;

MIN:查找指定列的最小值

SELECT MIN(trade_amount) FROM order;

COUNT:计算指定列的行数

SELECT COUNT(trade_amount) FROM order;

日期和时间函数

NOW:返回当前日期和时间

SELECT NOW();
-- 2023-09-18 21:55:12

DATE:返回日期部分

SELECT DATE(NOW());
-- 2023-09-18

TIME:返回时间部分

SELECT TIME(NOW());
-- 21:55:52

YEAR:返回年份部分

SELECT YEAR(NOW());
-- 2023

MONTH:返回月份部分

SELECT MONTH(NOW());
-- 9

DAY:返回天数部分

SELECT DAY(NOW());
-- 18

条件函数

IF:根据条件返回不同的值

IF(condition, true_value, false_value)

  • condition:要测试的条件表达式。
  • true_value:如果条件为真,则返回此值。
  • false_value:如果条件为假,则返回此值
SELECT name, score, IF(score >= 90, '优秀', IF(score >= 70, '良好', IF(score >= 50, '及格', '不及格'))) as grade FROM students;

UPDATE orders SET status = IF(total_price > 1000, '高价', '低价') WHERE id = 1;

CASE:在查询中执行条件逻辑

SELECT name, 
       CASE 
           WHEN age >= 18 THEN 'Adult'
           WHEN age >= 13 THEN 'Minor'
           ELSE 'Unknown'
       END as age_group FROM users;

SELECT name, 
       CASE age 
           WHEN 18 THEN 'Adult'
           WHEN 13 THEN 'Minor'
           ELSE 'Unknown'
       END as age_group FROM users;

聚合函数:

GROUP BY:根据指定的列对结果进行分组

SELECT department, COUNT(*) as number_of_employees FROM table GROUP BY department 

HAVING:筛选分组后的结果

SELECT department, COUNT(*) as number_of_employees FROM table
GROUP BY department HAVING number_of_employees > 10;

ORDER BY:按指定的列对结果进行排序

SELECT department, COUNT(*) as number_of_employees FROM table
GROUP BY department ORDER BY number_of_employees DESC;

LIMIT:限制返回的行数

SELECT id, name FROM user limit 1, 10

其他函数:

MD5:计算字符串的MD5哈希值

SELECT MD5('Hello World');

-- b10a8db164e0754105b7a99be72e3fe5

RAND:生成随机数

-- 生成一个 0 到 1 之间的随机浮点数:
SELECT RAND();
-- 0.07283980964947474

-- 生成一个 100 到 200 之间的随机整数:
SELECT FLOOR(100 + RAND() * 101);
-- 187

ROUND:对数值进行四舍五入

语法:ROUND(number, decimals)
参数:

  • number:要四舍五入的数字。
  • decimals:小数点后的位数。如果为正数,则表示小数点后的位数;如果为负数,则表示小数点前的位数。
SELECT version();  -- 结果为 5.7.40

-- 将数字 123.4567 四舍五入到小数点后两位:
SELECT ROUND(123.4567, 2);  -- 结果为 123.46

-- 将数字 12345 四舍五入到小数点前一位:
SELECT ROUND(12345, -1);  -- 结果为 12350

SELECT ROUND(12345, 0);  -- 结果为 12345

CEILING:向上取整

CEILING(number)
返回大于或等于给定数字的最小整数

-- 返回大于或等于 5.6 的最小整数:
SELECT CEILING(5.6);  -- 返回 6

-- 返回大于或等于 -3.1 的最小整数:
SELECT CEILING(-3.1);  -- 返回 -3

FLOOR:向下取整

-- 返回小于或等于 5.6 的最大整数:
SELECT FLOOR(5.6);  -- 返回 5

-- 返回小于或等于 -3.1 的最大整数:
SELECT FLOOR(-3.1);  -- 返回 -4

EXISTS()

MySQL的EXISTS函数用于测试子查询是否返回任何结果。如果子查询返回至少一行结果,EXISTS函数返回TRUE,否则返回FALSE

语法:EXISTS (subquery)

其中,subquery是一个子查询,它可以是任何有效的SQL查询。

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- 是否存在至少一个订单
SELECT EXISTS (SELECT 1 FROM orders);
-- 下过单的用户
SELECT * FROM customers cus where EXISTS (SELECT 1 FROM orders o where o.customer_id = cus.customer_id);

其他

提升数据库性能的关键所在!Mysql执行计划解析-CSDN博客

Mysql 触发器-两个数据库的表数据同步-步骤与问题解决_两个mysql数据库实现其中两张表 增量同步脚本如何编写-CSDN博客

MySQL语法、UNION合并查询结果集 一条数据拆分成多条和查询结果中增加一个自定义字段_union语句拆分多个查询汇总-CSDN博客

数据库优化要点,让你的数据运行如风!

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

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

相关文章

24/01/09 qt work

1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

doris部署

doris-2.0.1.1部署安装 一、下载doris安装包二、解压到/data下&#xff0c;修改名称三、修改fe配置文件四、启动doris-fe五、验证doris-fe六、修改be配置文件七、启动doris-be八、mysql中连接be&#xff0c;在Doris中添加后端节点九、设置密码 一、下载doris安装包 wget https…

【开源】基于JAVA+Vue+SpringBoot的大学计算机课程管理平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

单片机原理及应用:中断服务函数

承接上文&#xff0c;今天我们来学习一下中断服务函数&#xff0c;对中断不了解的朋友可以回顾一下笔者之前的文章 中断系统结构与控制寄存器 中断服务函数是嵌入式系统中用于处理中断事件的函数&#xff0c;在原版的C语言中并不存在。当发生中断事件时&#xff0c;系统将会跳…

微信小程序canvas画布实现矩形元素自由缩放、移动功能

获取画布信息并绘制背景 .whml <canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="get_rect_touch_position" bindtouchmove="move_or_scale" bind:tap="finish_edit_check"/> .wxss .c…

论文阅读 BERT GPT - transformer在NLP领域的延伸

文章目录 不会写的很详细&#xff0c;只是为了帮助我理解在CV领域transformer的拓展1 摘要1.1 BERT - 核心1.2 GPT - 核心 2 模型架构2.1 概览 3 区别3.1 finetune和prompt 3.2 transformer及训练总结 不会写的很详细&#xff0c;只是为了帮助我理解在CV领域transformer的拓展 …

Redis主从复制哨兵及集群

目录 一.主从复制 主从复制的工作原理如下&#xff1a; 主从复制的作用&#xff1a; 搭建Redis 主从复制 每台服务器配置&#xff1a; ​编辑进行编译安装&#xff1a; 定义systemd服务管理脚本&#xff1a; 开启服务&#xff0c;报错看下内容&#xff1a; 修改 Redis…

HCIA-Datacom题库(自己整理分类的)_15_VRP平台多选【9道题】

1.VRP操作平台存在哪些命令行视图? 用户视图 接口视图 协议视图 系统视图 2.以下哪些存储介质是华为路由器常用的存储介质 SDRAM NVRAM Flash Hard Disk SD Card 解析&#xff1a;Hard Disk是硬盘&#xff0c;一般网络设备没有。 3.VRP支持通过哪几种方式对路由器…

红队打靶练习:DERPNSTINK: 1

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 目录探测 1、gobuster 2、dirsearch WEB get flag1 robots.txt /php/phpmyadmin /temporary /weblog wordpress wpscan扫描 漏洞发现 提权 系统信息收集 mysql登录 john get flag2 s…

Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了&#xff0c;今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西&#xff0c;再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 一.什么是装箱&#xff1f;什么是拆箱&#xff1f; 我们…

Python画国旗

前言 今天&#xff0c;我们来用turtle库来绘制国旗 一、美国国旗 国旗的形状是长方形;国旗的长宽之比为19:10&#xff0c;美国国旗由红、白、蓝三色组成;画面格局由两部分组成&#xff0c;旗的左上方蓝底上排列着50颗白色的星&#xff0c;6颗一排与5颗一排相间排列&#xff…

使用Process Explorer和Dependency Walker排查程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误

目录 1、问题描述 2、分析软件问题的常用分析工具 3、使用Dependency Walker排查启动程序时报找不到ucrtbase.dll、vcruntime140.dll等运行时库的问题 3.1、使用Dependency Walker查看exe程序的库依赖关系&#xff0c;排查找不到ucrtbase.dll、vcruntime140.dll库问题 3.2…

指针的含义、表示、规范、存储、运用

指针的含义、表示、规范、存储、运用 指针的含义指针的表示指针的规范先声明再定义声明和定义一起表示错误表示 指针的存储理解一个变量的存储过程和原理理解一个指针的存储过程和原理理解多个指针的存储过程和原理 指针的运用 指针的含义 表示某个变量或数据所在的内存地址 注…

大模型笔记 【1】 大模型初探

以下是Andrej Karpathy一小时讲解chatgpt的笔记。 Andrej Karpathy做自动驾驶的人应该比较熟悉&#xff0c;他是李飞飞的学生。在openAI做了一年半的科学家之后&#xff0c;去了特斯拉。在Tesla AI day讲解tesla自动驾驶方案的就是他。 这里我的主要收获是两个 大模型是一个有…

12V 全桥驱动芯片GC9008——可替代TMI8118,应用于摄像机、消费类产品上

GC9008 是一款 12V 全桥驱动芯片&#xff0c;为提供高性价比的方案。它能提供 0.1A 的持续输出电流。可以工作在 4.5~15V 的电源电压上。 具有 PWM&#xff08;IN1/IN2&#xff09;输入接口,与行业标准器件兼容.是 SOP8封装&#xff0c;GC9008D是DIP封装芯片特点 ● H 桥电机驱…

关于burpsuite对app(移动端)进行抓包的配置

可以使用手机模拟器&#xff0c;我这里以自己手机&#xff08;物理机&#xff09;演示配置过程 如果是使用的模拟器那么肯定和电脑是在同一局域网 如果使用物理机&#xff0c;那么可以通过连接同一WiFi确保在同一局域网环境下 查看电脑内网ip&#xff1a;192.168.1.105 &am…

2023 年精选:ChatGPT 会取代开发者吗?

由于最近发布了ChatGPT&#xff0c;人工智能再次热闹起来&#xff0c;ChatGPT 是一种自然语言聊天机器人&#xff0c;人们用它来写电子邮件、诗歌、歌词和大学论文。早期采用者甚至用它来编写Python 代码&#xff0c;以及对 shellcode 进行逆向工程并用 C 重写。ChatGPT 给那些…

Docker实战09|使用AUFS包装busybox

前几篇文章中&#xff0c;重点讲解了如何实现构建容器&#xff0c;需要回顾的小伙伴可以看以下文章&#xff1a; 《Docker实战06&#xff5c;深入剖析Docker Run命令》《Docker实战07&#xff5c;Docker增加容器资源限制》《Docker实战08&#xff5c;Docker管道及环境变量识别…

1879_什么是丝印

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1873_什么是丝印 丝印这个词…

Android平板浏览器远程Ubuntu服务器使用code-server编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…