首页 > 其他分享 >3-函数

3-函数

时间:2023-04-30 13:11:52浏览次数:24  
标签:函数 when 结果显示 语法 MySQL select

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

使用场景:

image-20230430081024053

  1. 在企业的 OA 或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能 够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12,那如果快速计 算出天数呢?
  2. 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的 分数值,如 98/75,如何快速判定分数的等级呢?

其实,上述的这一类的需求呢,我们通过 MySQL 中的函数都可以很方便的实现 。

MySQL 中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

1. 字符串函数

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

image-20230430081249197

演示如下:

1. concat : 字符串拼接

语法:

select concat('Hello' , ' MySQL');

执行结果:

image-20230430081630547

2. lower : 全部转小写

语法:

select lower('Hello');

执行结果:

image-20230430082052519

3. upper : 全部转大写

语法:

select upper('Hello');

执行结果:

image-20230430082245295

4. lpad : 左填充

语法:

select lpad('01', 5, '-');

意思是 : 在字符串 01 的左边填充 - 然后填充的字符串加上 01 刚好有五个字符串

结果显示:

image-20230430082630148

5. rpad : 右填充

语法:

select rpad('01', 5, '-');

结果显示:

image-20230430082937425

6. trim : 去除空格

语法:

select trim(' Hello MySQL ');

结果显示:

image-20230430083131686

7. substring : 截取子字符串

语法:

select substring('Hello MySQL',1,5);

结果显示:

image-20230430083316674

2. 数值函数

常见的数值函数如下:

image-20230430083742802

演示如下:

1. ceil:向上取整

语法:

select ceil(1.1);

结果显示:

image-20230430102856606

2. floor:向下取整

语法:

select floor(1.9);

结果显示:

image-20230430103252431

3. mod:取模

语法:

select mod(7,4);

我的理解:前面的数除以后面的数然后进行取余

结果显示:

image-20230430103513312

4. rand:获取随机数

语法:

select rand();

结果显示:

image-20230430103618418

image-20230430103631243

5. round:四舍五入

语法:

select round(2.344,2);

个人理解:round() 函数 , 后面的数字是多少就前面的数字就保留多少位小数

结果显示:

image-20230430103830038

image-20230430104020371

3.日期函数

常见的日期函数如下:

image-20230430104406323

演示如下:

1. curdate:当前日期

语法:

select curdate();

结果显示:

image-20230430105334675

2. curtime:当前时间

语法:

select curtime();

结果显示:

image-20230430105458165

3. now:当前日期和时间

语法:

select now();

结果显示:

image-20230430105617254

4. YEAR , MONTH , DAY:当前年、月、日

语法:

select YEAR(now());

select MONTH(now());

select DAY(now());

结果显示:

image-20230430105853093

image-20230430105913533

image-20230430105927953

5. date_add:增加指定的时间间隔

语法:

select date_add(now(), INTERVAL 70 YEAR );

结果显示:

image-20230430110123657

6. datediff:获取两个日期相差的天数

语法:

select datediff('2021-10-01', '2021-12-01');

结果显示:

image-20230430110252490

4. 流程函数

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

image-20230430124145323

演示如下:

1. if

  • IF(value , t , f) , 如果 value 为 true,则返回 t,否则返回 f

语法:

select if(false, 'Ok', 'Error')

结果显示:

image-20230430124322340

2. ifnull

  • IFNULL(value1 , value2) , 如果 value1 不为空,返回 value1,否则 返 value2

语法:

select ifnull('Ok','Default');

select ifnull('','Default');

select ifnull(null,'Default');

结果显示:

  1. value 不为空

    image-20230430124618453

  2. valuel 为空

    image-20230430124806458

3. case when then else end

  • CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END , 如果 val1 为 true,返回 res1,... 否 则返回 default 默认值

需求:

查询 emp 表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)

select
	name,
	( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else
'二线城市' end ) as '工作地址'
from emp

案例:

create table score(
	id int comment 'ID',
	name varchar(20) comment '姓名',
	math int comment '数学',
	english int comment '英语',
	chinese int comment '语文'
) comment '学员成绩表';

insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);

image-20230430125214182

具体的 SQL 语句如下:

select
	id,
	name,
	(case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end )
'数学',
	(case when english >= 85 then '优秀' when english >=60 then '及格' else '不及格'
end ) '英语',
	(case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格'
end ) '语文'
from score;

结果显示:

image-20230430125500146

标签:函数,when,结果显示,语法,MySQL,select
From: https://www.cnblogs.com/NorthPoet/p/17365157.html

相关文章

  • 浅谈欧拉函数
    求法设一个数x的各质因子为$p_1,p_2,...,p_n$则$\phi(x)=x-\frac{x}{p_1}-\frac{x}{p_2}-...-\frac{x}{p_n}+\frac{x}{p_1*p_2}+\frac{x}{p_2*p_3}+...=x*\frac{p_1-1}{p_1}*\frac{p_2-1}{p_2}*...*\frac{p_n-1}{p_n}$性质性质1若$n,m$互质,则$\phi(n*m)=\phi(n)*\phi(m)$证......
  • Delphi原子操作函数介绍
    一、Delphi的原子操作函数在System.SyncObjs单元中,有一个TInterlocked的密封类,其十多个类函数(classfunction)其实都是调用的System单元的原子操作函数,只是封装得更容易理解。使用方法:如对一个数值加一,则直接b:=TInterlocked.Increment(a);或TInterlocked.Increment(a);,不用创建......
  • C语言函数大全-- s 开头的函数(3)
    C语言函数大全本篇介绍C语言函数大全--s开头的函数(3)1.sleep1.1函数说明函数声明函数功能unsignedintsleep(unsignedintseconds);它是C语言标准库中的函数,用于使当前进程挂起一定的时间。在挂起期间,操作系统会将该进程从调度队列中移除,直到指定的时间过去为......
  • linux c/c++程序集成python库,实现调用python函数
    为了提高开发效率,扩展开发程序的功能,我们经常会在我们的linuxc/c++进程里调用外部脚本,例如lua、python,下面,介绍下如何在自己的linuxc/c++代码里调用python脚本里的函数和类,并且将python库集成到我们自己的进程目录里,这样就不依赖系统环境是否存在python及其版本要求。 ......
  • 06 - react的类组件中的状态state render函数 this指向问题 事件绑定
    //注册事件importReactDomfrom"react-dom"import{Component}from"react"//类组件中的状态通过this.state.xxx来获取状态classHelloextendsComponent{//事件对象eventhandleClick(e){console.log(this)//udnefiend使用箭头函数解决this......
  • matlab出现函数或变量'fun1'无法识别出错fmincon(line 562)
    函数或变量'fun1'无法识别出错fmincon(line562)原因有两个1.函数名要与函数文件名相同如这里我的函数名是fun1,那么这个文件也要命名为fun12.路径出现了问题通常情况下matlab运行的时候是在C盘对应的bin目录下,但是我保存的这些代码文件并不是再C盘而是在D盘所以我们要进行手......
  • react的类组件和函数组件 -- 状态 state
    //函数组件是无状态的既没有数据的类似vue组件中的data数据//类组件是有状态的组件是有数据的是双向绑定的数据是数据驱动视图的负责UI的视图更新(单个组件的私有数据组件之间的数据是独立的)importReactDomfrom"react-dom"import{Component}from"react......
  • 定义函数时不要使用可变类型作为参数的默认值
    《流畅的Python》第8章8.4.1小节 可变默认值导致的这个问题说明了为什么通常使用None作为接收可变值的参数的默认值。类名.__init__.__defaults__:查看类中形式参数的默认值函数名.__defaults__属性:查看形式参数的默认值#形式参数L是可变类型时隐藏的问题defadd_end(L=[......
  • Cygwin、MSYS2 Bash封装函数restart,重启Windows程序进程向导,输入序号一键重启对应进程
    概述作用:终端输入restart,根据菜单提示输入序号重启特定的软件或进程,定义的重启函数太多不便于记忆的情况,特别是手机远程终端(如:JuiceSSH)连接的情况下,减少手动输入和误操作,其中判定浏览器进程使用了另一篇文章中预定的函数wmicps,ps2为指向wmicps的alias(详见:https://www.cnblog......
  • 生成函数GeneratingFunction
    生成函数GeneratingFunction极限\(\forall\rightarrow\)对于\(\exists\rightarrow\)存在极限:\(\forall\epsilon,\existsN,N>n,|a_n-A|<\epsilon\)就是说,对于所有(任意小的非负整数)\(\epsilon\)存在\(N\),使得\(a_n\)与A的差值小于\(\epsilon\)我们就把\(A\)叫做此序列......