Mysql常用函数及技巧

开源项目SDK:https://github.com/mingyang66/spring-parent
个人文档:https://mingyang66.github.io/raccoon-docs/#/

一、round()函数

round()函数用于将数字四射侮辱到指定的小数位,语法如下:

round(number, decimals)
  • number:要四舍五入的数字。
  • decimals:要保留的小数位数,如果省略此参数,则会四舍五入到最接近的整数。

示例:

SELECT ROUND(123.4567); //123
SELECT ROUND(123.4567, 2); //123.46
二、lpad和rpad字符串函数

用于在字符串左侧和右侧填充指定的字符,知道达到指定的长度

  • lpad(str, len, padStr) 函数str是原始字符串,len是返回的字符串的长度,padStr是要填充的字符串,填充从左侧开始。
  • rpad(str, len, padStr) 函数str是原始字符串,len是返回的字符串的长度,padStr是要填充的字符串,填充从右侧开始。

示例如下:

selectlpad(f.time, 6, '0'),rpad(f.time, 6, '0') 
fromfund f
三、lengh()和char_length()函数

lenght()函数在mysql中用于返回字符串的从航都,它返回的是字符串的字节数,而不是字符数,如果是UTF-8编码的多字节字符串,那么一个字符可能栈多个字节,如:汉字

示例:

SELECT length('123SD');//5
SELECT length('资金明细');//12
SELECT length(null);//null

如果数据库中使用的是多字节字符集(如:汉字),并且是想获取字符数而不是字节数,那就使用char_length()函数,示例如下:

select char_length('123SD');//5
select char_length('资金明细');//4 
select char_length(null);//null

在使用length和char_length的时候如果是null则会返回null,可以使用ifnull或coalesce函数来处理。

四、substring和substr函数

mysql中的substring和substr函数是等价的,它们用于从一个字符串中提取子字符串。

语法如下:

substring(str, pos, len)
substr(str, pos, len)
  • str:要从中提取子字符串的原始字符串。
  • pos:开始提起的位置(基于1的索引)。
  • len:(可选)要提取的字符串,如果省略,则返回从pos到字符串末尾的所有字符串。

示例如下:

select substring('2024061100100000', 1, 10); //2024061100
select substring('2024061100100000', 11, 6); //100000
select substring('2024061100100000', -6, 3);//100
select substring('2024061100100000', -6, -3);//空字符串select substr('2024061100100000', 1, 10); //2024061100
select substr('2024061100100000', 11, 6); //100000
select substr('2024061100100000', -2, 3);//00
select substr('2024061100100000', -6, -3);//空字符串

注意:

  • 如果pos的值大于字符串的长度,或者pos和len的组合导致超出字符串范围,则返回空字符串。
  • 如果len是负值,函数将返回一个空字符串。
五、concat和concat_ws函数

concat函数用于连接两个或多个字符串,示例如下:

select concat('sd-','23','-233');//sd-23-233
select concat('sd-','23', ''); //sd-23
select concat('sd-','23',null);//null
select concat('sd-','23',ifnull(null,''));//sd-23

注意:

  • 如果连接的属性有一个为null,则会返回null,可以使用ifnull和coalesce函数来处理null值问题;

concat_ws函数用于连接两个或多个字符串,并在他们之间插入一个指定的分隔符,如果任何参数为null,则会忽略此参数。

语法如下:

concat_ws(分隔符,参数1,参数2...)

示例如下:

select concat_ws('-','dd','s'); //dd-s
select concat_ws('-','dd','s', null);//dd-s
六、max和min函数

max和min是聚合函数用于获取数据库中某一列的最大或最小的值,示例如下:

select max(f.price) from sales f
select min(f.price) from sales f
七、trim函数

trim()函数用于去除字符串前后的空格或其它指定的字符,语法如下:

TRIM([BOTH | LEADING | TRAILING] [remstr] FROM] str)
  • BOTH、LEADING、TRAILING用于指定要删除的位置,如果省略,默认为BOTH。
  • remstr是要从字符串中删除的字符。如果省略,默认为空格。
  • str是要处理的字符串。

示例:

  • 去除字符串前后的空格
select trim(' Hello World '); // Hello World
  • 去除字符串后的特定字符串
select trim(leading '-' from '--Hello World--');// Hello World--
  • 去除字符串后的特定字符串

    select trim(trailing '-' from '--Hello World--');// --Hello World
    
  • 去除字符串前后的特定字符串

select trim(both '-' from '--Hello World--');// Hello World
八、count函数

count函数用于计算表中的记录数或特定列的非null值数;

  • 计算一个表中指定条件的所有记录数
SELECT COUNT(*) FROM DEVICE d WHERE d.TYPE IS NULL
  • 计算一个表中指定列非null值的数量
SELECT COUNT(d.TYPE) FROM DEVICE d WHERE d.TYPE IS NULL  
九、str_to_date()函数将字符串转日期

str_to_date函数可以将字符串转换为日期对象,如果你有一个字符串日期,可以将其转换为日期对象,转换示例如下:

select str_to_date('2024-06-15 10:24:26', '%Y-%m-%d %H:%i:%s') as mydate from dual
select str_to_date('2024/06/15 10:24:26', '%Y/%m/%d %H:%i:%s') as mydate from dual
select str_to_date('2024-06-15', '%Y-%m-%d') as mydate from dual
select str_to_date('20240615', '%Y%m%d') as mydate from dual

在上述示例中格式代表的含义如下:

  • %Y代表思维数的年份
  • %m代表两位数的月份
  • %d代表两位数的日期
  • %H代表24小时制的小时
  • %i代表两位数的分钟
  • %s代表两位数的秒
十、date_format()函数将日期转字符串

使用date_format()函数可以将日期对象转换为字符串,可以根据指定的格式来格式化日期/时间值,示例如下:

SELECT DATE_FORMAT(s.updateTime, '%Y-%m-%d %H:%i:%s')  FROM sailboat s 
SELECT DATE_FORMAT(s.updateTime, '%Y-%m-%d')  FROM sailboat s 
SELECT DATE_FORMAT(s.updateTime, '%H:%i:%s')  FROM sailboat s 

在上述示例中格式代表的含义如下:

  • %Y代表思维数的年份
  • %m代表两位数的月份
  • %d代表两位数的日期
  • %H代表24小时制的小时
  • %i代表两位数的分钟
  • %s代表两位数的秒
十一、date_add函数

date_add()函数用于在给定的日期上添加指定的时间间隔,它的语法如下:

DATE_ADD(date, INTERVAL expr unit)

其中:

  • date是要修改的日期。
  • expr是要添加的时间间隔数量。
  • unit是时间间隔单位,如DAY、MONTH、YEAR、HOUR、MINUTE、SECOND、MICROSECOND、WEEK、QUARTER等

示例:

SELECT DATE_ADD(CURDATE(), INTERVAL 5 YEAR) as date1;
SELECT DATE_ADD('2024-06-15 12:23:25', INTERVAL 2 MONTH);
SELECT DATE_ADD('2024-06-15', INTERVAL 2 DAY);
SELECT DATE_ADD('2024-06-15 12:23:25', INTERVAL 2 HOUR);
SELECT DATE_ADD('2024-06-15 12:23:25', INTERVAL 2 MINUTE);
SELECT DATE_ADD('2024-06-15 12:23:25', INTERVAL 2 SECOND);
select DATE_ADD(CURDATE(), INTERVAL 5 DAY) as time
select DATE_ADD(CURDATE(), INTERVAL 1 MONTH) as time
select DATE_ADD(CURDATE(), INTERVAL 1 YEAR) as time
select DATE_ADD(CURDATE(), INTERVAL 5 HOUR) as time
select DATE_ADD(CURDATE(), INTERVAL 5 MINUTE) as time
select DATE_ADD(CURDATE(), INTERVAL 5 SECOND) as time
select DATE_ADD(CURDATE(), INTERVAL 5 MICROSECOND) as time
select DATE_ADD(CURDATE(), INTERVAL 5 WEEK) as time
select DATE_ADD(CURDATE(), INTERVAL 5 QUARTER) as time
十二、date_sub函数

date_sub用于从日期中键入指定的时间间隔,它的语法如下:

date_sub(date, INTERVAL expr unit)
  • date 是你希望从中减去时间间隔的日期。
  • expr 是你想要减去的时间间隔的数量。
  • unit 是时间间隔的单位,可以是 MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, 或 YEAR

示例:

select DATE_SUB(CURDATE(), INTERVAL 5 DAY) as time
select DATE_SUB(CURDATE(), INTERVAL 1 MONTH) as time
select DATE_SUB(CURDATE(), INTERVAL 1 YEAR) as time
select DATE_SUB(CURDATE(), INTERVAL 5 HOUR) as time
select DATE_SUB(CURDATE(), INTERVAL 5 MINUTE) as time
select DATE_SUB(CURDATE(), INTERVAL 5 SECOND) as time
select DATE_SUB(CURDATE(), INTERVAL 5 MICROSECOND) as time
select DATE_SUB(CURDATE(), INTERVAL 5 WEEK) as time
select DATE_SUB(CURDATE(), INTERVAL 5 QUARTER) as time
十三、datediff函数

datediff函数用于返回两个日期之间的天数,它的语法如下:

datediff(date1, date2)
  • date1date2 是要比较的两个日期。
  • 函数返回 date1 - date2 的结果,即 date1date2 早多少天。如果 date1 晚于 date2,则结果为正数;如果 date1 早于 date2,则结果为负数;如果两个日期相同,则返回 0。

示例:

select datediff('20240619','20240617') from dual 
select DATEDIFF(CURDATE(), s.updateTime) from sailboat s  
十四、sysdate和now函数

sysdate和now都用于获取当前的日期和函数,但是它们之间也存在一些差异;

select SYSDATE() from dual 
select NOW() from dual 
  • now()返回当前的日期和时间,基于从服务器获取的时间;sysdate()也返回当前的日期和时间,但是它基于执行该函数的客户端机器的系统时间。
  • now()在事务开始和结束时其值是一样,即使在事务内部花费了很长时间;sysdate()在事务中多次调用,每次调用返回值都可能不同。
十五、currdate和currtime函数

currdate()和currtime()用于分别获取当前的日期和当前时间,示例如下:

select CURDATE() FROM DUAL
select CURTIME() from dual 
十六、cast和convert函数数据类型转换

mysql中cast和convert函数都用于数据类型转换,但是它们之间确实存在一些差异。

  • 语法差异

cast函数的语法如下:

sql cast(expression as type)

convert函数的语法如下:

sql convert(expression, type)

案例如下:

SELECT cast(202102 as char)
SELECT convert(202102, char)

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

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

相关文章

乱弹篇(35)掩耳盗铃与两三十年

成语“ 掩耳盗铃 ”,比喻自己欺骗自己,明明是掩盖不住的事情偏要想法子掩盖。它多用来讽刺那些做事不想让别人知道,却偏偏又引起他人注意的人。 现在网络上以新浪微博和邪恶的“800727”为典型的自媒体平台和其掌控者,就是现代版…

【Linux基础】基础环境配置

设置APT源 进入源文本设置: vim /etc/apt/sources.list 配置源: #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib#阿里云 deb http:…

提升研发效率:三品PLM解决方案在汽车汽配行业的实践

随着全球汽车市场的快速发展,中国汽车汽配行业迎来了前所未有的发展机遇。然而,在这一过程中,企业也面临着诸多挑战,如研发能力的提升、技术资料管理的复杂性、以及跨部门协作的困难等。为了应对这些挑战,三品产品生命…

Flink assignTimestampsAndWatermarks 深度解析:时间语义与水印生成

目录 概述 时间语义 时间戳分配 水印的作用 最佳实践 案例分析 注意事项 应用场景 概述 在Apache Flink中,assignTimestampsAndWatermarks是一个重要的方法,它允许数据流处理程序根据事件时间(event time)分配时间戳和生成水印(watermarks)。这个方法通常用于处理…

模式分解算法-满足3NF的无损且保持函数依赖的分解算法、满足BCNF的无损连接分解算法

一、引言 1、对指定的关系模式,若范式级别较低,为第一范式或第二范式,由于存在数据冗余或更新异常问题,在实际中一般是不可用的,关系模式的规范化就是将满足低一级的关系模式分解为若干满足高一级范式的关系模式的集合…

金融与教育领域的等保测评分析

简介 等保测评是指信息系统安全等级保护测评,它是根据国家相关法律法规和标准,对信息系统安全等级进行的评估和认证。金融与教育领域作为关键信息基础设施的重要组成部分,其信息系统安全尤为重要。本文将对这两个领域的等保测评进行分析&…

Python轻松设置Excel单元格数字显示格式

Excel作为强大的数据处理与分析工具,不仅能够存储大量数据,还支持复杂的数据处理与可视化功能。而如何恰当地展示Excel表格中的数据是Excel文件制作的关键之一。这便涉及到Excel单元格数字格式的设置。数字格式不仅关乎数据的美学呈现,如货币…

聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例

前言 dynamic 是一种有别于传统变量类型的动态类型声明,刚开始接触可能在理解上会有些困难,可以简单地把它理解为一个盲盒,你可以任意猜测盒子有什么东西,并认为这些东西真正存在而进行处理,等到真正打开时&#xff0…

网上的流量卡真的可以免费领取吗?

网上的流量卡真的可以免费领取吗?当然可以,目前运营商推出的流量卡都是可以免费领取的。 有很多朋友私信给小编,听说流量卡是免费领取的就觉得不太靠谱,其实这种想法是不对的,首先大家要换位思考一下,如果我…

计算机建模| FIT3139 Computational Modelling and Simulation – PAPER 1

本次澳洲写主要为计算机建模相关的限时测试 Question 1 [10 marks 5 5 ] This question is about errors and computer arithmetic. A) Determine an expression that approximates the condition number for the following function: f(x) e3x21 B) Explain what are the …

小程序截图分享

如果加水印的话&#xff0c;我是用背景做了个水印截的图 <content-interface><canvas canvas-id"share" style"position: fixed;top: -1000px;height: 100vh; width: 100%;"></canvas><view class"page-content"><v…

Ubuntu配置ssh+vnc(完整版)

Ubuntu配置sshvnc&#xff08;完整版&#xff09; 1 配置ssh 1. 安装openssh-server&#xff0c;配置开机自启 # 更新包 sudo apt-get update # 安装openssh-server sudo apt-get install -y openssh-server # 启动服务 sudo service ssh start # 配置开机自启 sudo systemc…

C++类和对象总结

目录 总结 一、引言 二、类的定义 三、对象的创建与初始化 四、访问控制 五、封装 六、继承 七、多态 八、其他特性 九、总结 C类的定义 C对象的创建和初始化 C类的访问控制 总结 一、引言 C是一种面向对象的编程语言&#xff0c;其核心概念是类和对象。类是对现…

细说MCU定时器模块的输入捕捉功能的实现方法

目录 一、工程背景 二、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、 配置定时器TIM1 4、 配置定时器TIM13 5、配置串口 6、配置中断 7、配置系统时钟 三、代码修改 1、使能TIM1输入捕捉功能和TIM3的PWM输出功能 2、自定义变量 3、重定义回调函数 4、输出到…

【国际化I18n使用方法】vue2使用i18简单实现多语种切换,刷新保持,动态数据处理

效果图 使用流程 总结就是&#xff0c;安装好插件后&#xff0c;配置几个语言的js文件&#xff0c;每个词都要在每个js内写一遍对应的语言&#xff0c;然后通过切换js文件拿到对应的语言&#xff0c;实现翻译的效果。然后当前使用什么语言保存到本地&#xff0c;这样刷新就可以…

【进阶篇-Day4:使用JAVA编写石头迷阵游戏】

目录 1、绘制界面2、打乱石头方块3、移动业务4、游戏判定胜利5、统计步数6、重新游戏7、完整代码&#xff1a; 1、绘制界面 上述思路是&#xff1a;使用一个二维数组存放图片的编号&#xff0c;然后在后持遍历即可获取对应的图片。 代码如下&#xff1a; package com.itheima.s…

【设计模式之模板方法模式 -- C++】

模板方法模式 – 抽象父类&#xff0c;子类实现 模板方法设计模式是一种行为设计模式&#xff0c;它在父类中定义了一个操作的算法的骨架&#xff0c;而将一些步骤延迟到子类中实现。这样&#xff0c;可以在不改变算法结构的前提下&#xff0c;重新定义算法的某些特定步骤。模…

vue3父组件获取子组件实例(2024-06-22)

vue3获取子组件实例 在Vue 3中&#xff0c;可以使用ref来获取子组件的实例。首先&#xff0c;在父组件中需要引入ref&#xff0c;然后在模板中通过ref属性为子组件设置一个引用名称。之后&#xff0c;可以在父组件的setup函数中使用refAPI来访问子组件实例。 以下是一个简单的…

取代煤气灶,新能源电燃灶真有那么牛吗

在当今社会&#xff0c;能源问题日益凸显&#xff0c;能源危机的警钟不断敲响。与此同时&#xff0c;人们对于生活品质和安全环保的要求也越来越高。在这样的背景下&#xff0c;一种号称能取代燃气灶和电磁炉的新能源电燃灶——华火电燃灶进入了人们的视野。 华火电燃灶的出现似…

【区分vue2和vue3下的element UI Empty 空状态组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Element UI&#xff08;为 Vue 2 设计&#xff09;和 Element Plus&#xff08;为 Vue 3 设计&#xff09;中&#xff0c;Empty&#xff08;空状态&#xff09;组件通常用于在数据为空或没有内容时向用户展示一种占位提示。然而&#xff0c;需要注意的是&#xff0c;Element…