MySQ ---- 函数

news2024/12/26 0:09:13

函数

  函数是指一段可以直接被另一段程序调用的程序或代码。MySQL 内置了很多函数,开发人员只需要调用使用即可。查询语句中已经使用过了一些聚合函数。下面还有些常用的函数需要掌握。

  • 函数应用场景举例
函数应用场景
  • 函数的分类

  ① 字符串函数 ② 数值函数 ③ 日期函数 ④ 流程函数

1、字符串函数

  MySQL 中内置了很多字符串函数,常用的几个如下:

函数功能
concat(s1,s2,…,sn)字符串拼接,将s1,s2,…,sn拼接成一个字符串
lower(str)将字符串 str 全部转为小写
upper(str)将字符串 str 全部转为大写
lpad(str,n,pad)左填充,用字符串 pad 对 str 的左边进行填充,达到 n 个字符串长度
rpad(str,n,pad)右填充,用字符串 pad 对 str 的右边进行填充,达到 n 个字符串长度
trim(str)去掉字符串头部和尾部的空格
substring(str,start,len)返回字符串 str 从 start 位置(从1开始)起的 len 个长度的字符串
  • 字符串函数示例
-- concat(s1,s2,...,sn)
select concat('hello','mysql');     -- hellomysql
-- lower(str)
select lower('Hello');              -- hello
-- upper(str)
select upper('Hello');              -- HELLO
-- lpad(str,n,pad)
select lpad('01',5,'0');            -- 00001
-- rpad(str,n,pad)
select rpad('01',5,'0');            -- 01000
-- trim(str)
select trim('  001  100  ');        -- 001  100
-- substring(str,start,len)
select substring('hellomysql',1,2); -- he
-- 案例:由于业务需求变更,企业员工的工号workid,统一为5位数,目前不足5位数的全部在前面补0。
-- 比如: 1号员工的工号应该为00001。
update emp set workid = lpad(workid,5,'0');

2、数值函数

  常见的数值函数如下:

函数功能
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回 x/y 的模(取余数)
rand()返回 0-1 内的随机数
round(x,y)求参数 x 的四舍五入的值,保留 y 位小数
  • 数值函数示例
-- ceil(x)
select ceil(1.0);  -- 1
select ceil(1.2);  -- 2
-- floor(x)
select floor(1.0);  -- 1
select floor(1.9);  -- 1
-- mod(x,y)
select mod(3,5);    -- 3(3÷5=0余3)
select mod(5,3);    -- 2(5÷3=1余2)
-- rand()
select rand();      -- 0.9802188463324857(随机生成)
select rand();      -- 0.2877062636313087(随机生成)
-- round(x,y)
select round(0.98021,1);    -- 1.0
select round(0.98021,2);    -- 0.98
-- 案例 生成6位随机验证码
select substring(rand(),3,6);   -- 626255(随机 6 位数)

3、日期函数

  常见的日期函数如下:

函数功能
curdate()返回当前日期
curtime()返回当前时间
now()放回当前日期和时间
year(date)获取指定 date 的年份
month(date)获取指定 date 的月份
day(date)获取指定 date 的日期
date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔 expr 后的时间值
datediff(date1,date2)返回起始时间 date1 和结束时间 date2 之间的天数
  • 日期函数示例
-- curdate()
select curdate();               -- 2023-05-09
-- curtime()
select curtime();               -- 12:23:52
-- now()
select now();                   -- 2023-05-09 12:24:17
-- year(date)
select year(now());             -- 2023
select year('2001-01-04');      -- 2001
-- month(date)
select month(now());             -- 5
select month('2001-01-04');      -- 1
-- day(date)
select day(now());             -- 9
select day('2001-01-04');      -- 4
-- date_add(date,interval expr type)
select date_add(now(),interval 4 day);      -- 2023-05-13 12:29:32 (推迟4天)
select date_add(now(),interval 4 month);    -- 2023-09-09 12:30:07 (推迟4个月)
select date_add(now(),interval 4 year);     -- 2027-05-09 12:30:43 (推迟4年)
-- datediff(date1,date2): date1 - date2
select datediff(date_add(now(),interval 59 day),now()); -- 59
-- 案例:计算自己出生了多少天
select datediff(now(),'1995-12-05');        -- 10017

4、流程函数

  流程函数是很常用的一类函数,可以在 SQL 语句中实现条件筛选,从而提高语句的效率。

函数功能
if(value,t,f)如果 value 为 true ,则返回 t,否则返回 f
ifnull(value1,value2)如果 value1 不为空,则返回 value1,否则返回 value2
case when [val1] then [res1] … else [default] end如果 val1 为 true,返回 res1,… 否则返回 default 默认值
case [expr] when [val1] then [res1] … else [default] end如果 expr 的值等于 val1,返回 res1,… 否则返回 default 默认值
-- 流程控制函数
-- if
select if(true,'Ok','Error');        -- Ok
select if(false,'Ok','Error');       -- Error
select if(1,'Ok','Error');           -- Ok
select if(0,'Ok','Error');           -- Error
select if('','Ok','Error');          -- Error
select if('1','Ok','Error');         -- Ok
-- ifnull
select ifnull('','Default');         -- (空字符串)
select ifnull(1,'Default');          -- 1
select ifnull(true,'Default');       -- 1
select ifnull(null,'Default');       -- Default
-- case when then else end
-- 根据城市展示一线城市和非一线城市
select name,
       (case workaddress when '北京' then '一线城市' when '上海' then '一线城市'else '非一线城市' end) 工作地址
from emp;
-- 根据学生不同分数段展示成绩等级
select id,name,
       (case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) 数学,
       (case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) 语文,
       (case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) 英语
from score;

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

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

相关文章

chap和ppp认证配置+MGRE实验

题目要求 1.R2为ISP,其上只能配置IP地址 2.R1-R2之间为HDLC封装 3.R2-R3之间为ppp封装,pap认证,R2为主认证方 4.R2-R4之间为ppp封装,chap认证,R2为主认证方 5.R1,R2,R3构建MGRE环境,仅R1的IP地址固定 6.内…

OpenPCDet系列 | 4.KITTI数据集数据加载流程代码解析

文章目录 数据加载流程0. create_kitti_infos1. __getitem__函数2. prepare_data函数3. collate_batch函数数据加载流程 这里记录一下具体用到的那些数据形式,整个kitti数据集的处理框架图如下所示: 在数据集处理到获取一个batch数据的整个流程的入口如下: # 开始迭代每…

STL常用容器

目录 一、string容器 1、基本概念 2、构造函数 3、赋值操作 4、字符串拼接 5、查找和替换 6、字符串比较 7、字符存取 8、插入与删除 9、获取字串 二、vector容器 1、基本概念 2、构造函数 3、赋值操作 4、容量和大小 5、插入和删除 6、数据存取 7、互换容器…

hadoop shell操作HDFS文件

一.常用的 hadoop shell 文件路径需要自己有才行,示例中的文件路径是本人自己的文件路径,不是公共文件路径,如何建立自己的数仓,查看本人 大数据单机学习环境搭建 相关文章 1.1查看 创建 删除 # 列出当前hdfs所存贮的文件 hado…

模式串匹配算法(朴素模式匹配与KMP)的机算与手算。

一.朴素模式匹配 1.机算 其实就是暴力匹配。 使用双指针 i (指向主串) j (指向模式串) 从主串 S 第一字符起,与模式串 T, 第一个字符比较,   ①若相同,则 i 与 j 统一向后移   ②若遇到 i 与 j 指向字符不同,回溯 i j 指针。继续如此&a…

经验分享|如何搭建产品帮助文档

作为一款优秀的产品,除了功能强大、易于使用等特点外,相应的使用说明和帮助文档也是至关重要的,这些说明和文档可以帮助用户更好地使用这款产品,并解决在使用过程中的问题。本篇文章将为大家详细介绍如何搭建一份优秀的产品帮助文…

12-Vue技术栈之Vuex的使用

目录 1、理解 vue1.1 vuex 是什么1.2 什么时候使用 Vue1.3 图解两种方式实现数据共享 2、搭建vuex环境2.1 下载vuex2.2 配置文件 3、基本使用3.1 求和案例纯vue写法3.2 求和案例vuex写法 4、getters的使用5、四个map方法的使用5.1 求和案例 6、 模块化命名空间6.1求和案例改造 …

C++“static“成员使用

1.static 成员概念 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。 1.2 static特性 静态成员为所有类对…

JVM学习(十):方法区

目录 一、栈、堆和方法区的交互关系 二、对方法区的理解 2.1 方法区在哪里 2.2 方法区的基本概念 2.3 Hotspot中方法区的演进 三、方法区的大小 3.1 设置参数 3.1.1 jdk7及以前 3.1.2 jdk8以后: 3.2 配置参数演示OOM 四、方法区的内部结构 4.1 方法区里…

【Java虚拟机】JVM调优和分析案例综合实战

1.什么是JVM性能优化 jvm性能优化涉及到两个很重要的概念:吞吐量和响应时间。jvm调优主要是针对他们进行调整优化,达到一个理想的目标,根据业务确定目标是吞吐量优先还是响应时间优先。 吞吐量:用户代码执行时间/(用户代码执行时…

C语言学习分享(第六次)------数组

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 数组详解 1. 前言🔶2. …

使用 spring 的 IoC 的实现账户的CRUD(2)双层实现

spring实现service和dao的数据的查找 dao层设置接口实现dao层的接口service设置接口通过注入dao层,来实现接口 //dao层的接口,定义了根据id查询的方法 public interface Accountdao {Account findByid(int id); }实现接口:实现了查询的方法 …

【模板】拓扑排序

import java.util.Scanner; import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int point in.nextInt();int side in.nextInt();int[][] arr new i…

MacOS下安装和配置Nginx

一、安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"按回车后,根据提示操作:输入镜像序号 --> 输入Y,回车等待brew安装完成即可。 在终端输入brew -v后,会提示…

【牛客刷题专栏】0x25:JZ24 反转链表(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录 前言问…

Jedis客户端和SpringDataRedis客户端

目录 3.Redis的Java客户端 3.1.Jedis客户端 3.1.1.快速入门 3.1.2.连接池 3.2.SpringDataRedis客户端 3.2.1.快速入门 3.2.2.自定义序列化 3.2.3.StringRedisTemplate 3.Redis的Java客户端 3.1.Jedis客户端 Jedis的官网地址: GitHub - redis/jedis: Redis…

单片机中时钟分析与快速读懂时序图的方法

目录 一、时钟电路 二、周期 三、时序 我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念。 一、时钟电路 单片机时钟电路有三种方式…

LoadRunner的简单使用

目录 1、LoadRunner工具介绍 2、VUG的使用 3、Controller的使用 3.1、场景设计 3.2、场景运行及结果 4、Analysis的使用 1、LoadRunner工具介绍 Virtual User Generator:主要用来生成性能测试脚本Controller:创建测试场景,运行测试脚本、…

民用电力远程监控解决方案

民用电力远程监控解决方案 项目背景 随着我国城市现代化的飞速发展,城市配电系统的不断改造更新,信息化、网络化和智能化的快速发展,要求箱变安全稳定运行,出现故障能够及时排除保证快速供电。 但是,电力行业的监控…

如何挖掘闲置硬件资源的潜力-PrestoDB缓存加速实践小结

用户体验的追求是无限的,而成本是有限的,如何平衡? 用户体验很重要,降本也很重要。做技术的都知道,加机器堆资源可以解决绝大多数的用户觉得慢的问题,但要加钱。没什么用户体验是开发不了的,但…