MySQL基础2-函数

MySQL基础-函数

  • 一. 函数概述
  • 二. 字符串函数
  • 三. 数值函数
  • 三. 日期函数
  • 四. 流程函数

一. 函数概述

函数是指一段可以被另一段程序调用的程序或代码

二. 字符串函数

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位置起的长度为len的字符串

字符串函数的使用:

SELECT 函数(参数);

-- Example-- concat():
select concat('Hello', 'MySQL');-- lower():
select lower('HELLO');-- upper():
select upper('hello');-- lpad():
select lpad('1', 5, '-');-- rpad():
select rpad('2', 3, '*');-- trim():
select trim('   Hello, MySQL        ');-- substring():
select substring('Hello, MySQL', 2, 4);

三. 数值函数

常见的数值函数如下:

函数功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0-1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数
-- Example-- ceil(x):
select ceil(1.5);-- floor(x):
select floor(1.2);-- mod(x,y):
select mod(3,4);-- rand:
select rand();-- round(x,y):
select round(3.141592653, 3);

案例:使用函数生成6位数的验证码

-- 1.生成随机数
select rand() * 1000000;-- 2.取整,去掉小数位
select round(rand() * 1000000, 0);		# 若是生成的随机数如0.001....之类的数就无法保证生成的随机数是6位-- 3.使用左填充OR右填充
select lpad(round(rand() * 1000000, 0), 6, round(rand() * 1000000, 0));

三. 日期函数

常见的日期函数如下:

函数功能
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前时间和日期
YEAR(date)获取指定date的年份
MONTH(date)获取指定date的月份
DAY(date)获取指定date 的日期
DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1, date2)返回起始时间date1和结束时间date2之间的天数
-- Example-- curdate():
select curdate();-- curtime():
select curtime();-- now():
select now();-- year(date):
# 获取当前时间的年份
select year(now());
# 获取指定时间的年份
select year('2020-05-20 05:20:20');
# 使用年月日亦可
select year('2020-05-20');-- month(date):
select month(now());-- day(date):
select day(now());-- date_add(date, interval expr type):
# 以下使用当前时间做演示
# 获取70天之后的date
select date_add(now(), interval 70 day);
# 获取3个月前的date
select date_add(now(), interval -3 month);
# 获取20年后的date
select date_add(now(), interval 20 year);-- datediff(date1, date2):
# 使用方法:date1-date2,返回之间的天数
# 求两年前的今天和现在的间隔天数
select datediff(now(), now() - interval 2 year);
# 求8个月后和今天的间隔天数
select datediff(now() + interval 8 month, now());

四. 流程函数

流程函数也是常用的函数之一,可在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默认值
-- Example-- if():
select if(0, 1, 2);		# 返回2
select if(1, 3, 2);		# 返回3-- ifnull():
select ifnull('', 8);	# 返回空字符串(空字符串≠null)
select ifnull(null, 10);	# 返回10;

案例演示1:

查询emp表中员工地址,若为北京/上海,则展示’一线城市’,否则展示’二线城市’,emp表的创建可参考本专栏中MySQL基础1

selectname,case workAddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end as '工作地址' 
from emp;select * from scores;

案例演示2:
统计scores中各个同学的成绩(scores表的创建可参考本专栏中MySQL基础1),展示规则如下:

>= 85,展示优秀;>= 60, 展示及格;否则,展示不及格

selectid '学号',name '姓名',case when Chinese >= 85 then '优秀' when Chinese >= 60 then '及格' else '不及格' end '语文',case when Math >= 85 then '优秀' when Math >= 60 then '及格' else '不及格' end '数学',case when English >= 85 then '优秀' when English >= 60 then '及格' else '不及格' end '英语',age '年龄',gender '性别'
from scores;

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

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

相关文章

Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图

Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图 作者:安静到无声 个人主页 目录 Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图前言步骤总结推荐专栏前言 K线图是金融市场分析中常见的图表类型之一,它能够直观地展示价格的变化…

风控引擎如何快速添加模型,并实时了解运行状态?

目录 风控模型的主要类型 风控引擎如何管理模型? 模型就是基于目标群体的大规模采样数据,挖掘出某个实际问题或客观事物的现象本质及运行规律,利用抽象的概念分析存在问题或风险,计算推演出减轻、防范问题或风险的对策过程&…

LeetCode-135-分发糖果

题目描述:n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计…

后端面试话术集锦第 十八 篇:JVM面试话术

这是后端面试集锦第十八篇博文——JVM面试话术❗❗❗ 1. 介绍下JVM JVM主要包括:类加载器(class loader)、执行引擎(exection engine)、本地接口(native interface)、运行时数据区(Runtimedata area) 类加载器:加载类文件到内存。Class loader只管加载,只要符合文件…

死锁是什么?死锁的字节码指令了解?

用幽默浅显的言语来说死锁 半生:我已经拿到了机考的第一名,就差笔试第一名了 小一:我已经拿到了笔试的第一名,就差机考第一名了 面试官:我很看好你俩,继续"干", 同时拿到2个的第一名才能拿到offe…

win10 ping不通 Docker ip(解决截图)

背景: win10下载了docker desktop就是这个图,然后计划做一个springboot连接docker。 docker部署springboot :docker 部署springboot(成功、截图)_總鑽風的博客-CSDN博客 问题:spring boot部署docker后,docker接口通了&#xff0…

Java之文件操作与IO

目录 一.认识文件 1.1文件是什么? 1.2文件的组织 1.3文件路径 1.4文件的分类 二.文件操作 2.1File概述 三.文件内容操作--IO 3.1JavaIO的认识 3.2Reader和Writer ⭐Reader类 ⭐Writer类 3.2FileInputStream和FileOutputStream ⭐FileInputStream类 …

Weblogic SSRF【漏洞复现】

文章目录 漏洞测试注入HTTP头,利用Redis反弹shell redis不能启动问题解决 Path : vulhub/weblogic/ssrf 编译及启动测试环境 docker compose up -dWeblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi…

DDR2 IP核调式记录2

本文相对简单,只供自己看看就行。从其它的博客找了个代码,然后记录下仿真波形。 1. 功能 直接使用quartus生成的DDR2 IP核,然后实现循环 -->写入burst长度的数据后读出。 代码数据的传输是32位,实际使用了两片IC。因此IP核也是…

如何使用Python进行游戏开发?

使用Python进行游戏开发可以通过以下步骤进行: 安装Python:首先,确保你已经安装了Python解释器。你可以从Python官方网站下载并安装最新版本的Python。 选择游戏引擎:选择一个适合你的游戏项目的游戏引擎。一些流行的Python游戏引…

8月《中国数据库行业分析报告》已发布,聚焦数据仓库、首发【全球数据仓库产业图谱】

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

【分布式搜索引擎es】

文章目录 数据搜索DSL实现查询文档搜索结果处理 RestClient实现 旅游案例酒店搜索和分页酒店结果过滤我周边的酒店酒店竞价排名 elasticsearch最擅长的是 搜索和 数据分析。 数据搜索 DSL实现 查询文档 常见的查询类型包括: 查询所有:查询出所有数…

读SQL学习指南(第3版)笔记11_字符串函数和数值函数

1. 尽管SQL标准指定了部分函数,但数据库厂商并没有遵循这些函数规范 2. 字符串 2.1. char 2.1.1. 固定长度、不足部分用空格填充的字符串 2.1.2. MySQL允许的char类型的最大长度为255个字符 2.1.3. Oracle Database允许的最大长度为2,000个字符 2.1.4. SQL Se…

java八股文面试[JVM]——什么情况下会抛出OOM

什么情况下,会抛出OOM呢? JVM98%的时间都花费在内存回收 每次回收的内存小于2% 满足这两个条件将触发OutOfMemoryException,这将会留给系统一个微小的间隙以做一些Down之前的操作,比如手动打印Heap Dump。并不是内存被耗空的时…

Unity记录4.4-存储-系统数据以配置文件保存

文章首发见博客:https://mwhls.top/4818.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 汇总:Unity 记录 摘要:处处修改->一处修改的系统配置文件。 思路-2023/08/…

游戏 小代码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

Java 面试 - Redis

Redis Redis 是基于键值对的非关系型数据库。Redis 拥有string、hash、list、set、zset等多种数据结构, redis具有惊人的读写性能, 其优秀的持久化机制是的它在断电和机械故障时也不会发生数据丢失, 可以用于热点数据存放, 还提供了键过期、发布订阅、食物、流水线、LUA脚本等多…

按钮控件的基类--- QAbstractButton 类(抽象类)

1、QAbstractButton 属性 QAbstractButton 属性速查表属性名说明属性名说明autoExclusive自动排他性checked是否被选中autoRepeat是否启用自动重复down是否处于按下状态autoRepeatDelay初始延迟(毫秒)icon按钮上显示的图标autoRepeatInterval时间间隔(毫秒iconSize显示的图标的…

Vue + Element UI 前端篇(十二):用户管理模块

Vue Element UI 实现权限管理系统 前端篇(十二):用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中,可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤: 打开命令提示符(CMD):按WinR组…