程序员需掌握的SQL条件判断函数(六)

从2025年开始,程序员需掌握的五大核心技能 2025年,程序员将面临更高的技术要求。随着AI、云计算、大数据、区块链和网络安全等领域的不断发展,程序员需要不断提升自己的技能,以应对更加复杂的技术挑战。无论是作为开发者还是架构师,掌握这些核心技能,将帮助程序员在激烈的市场竞争中脱颖而出,抓住未来的职业机会。通过不断学习和实践,程序员不仅能跟上技术发展的步伐,还能在数字化转型的大潮中发挥关键作用。希望这些技能建议能够为你的职业发展提供有价值的参考,助力你在2025年的技术浪潮中领先一步。 阅读详情

前言

MySQL 提供了IF、IFNULL、CASE等条件判断函数,这类函数在开发中也是常常能应用到的,下表是MySQL提供的条件判断函数。

条件函数

函数名作用
IF(expr,v1,v2)如果expr为真则返回v1,否则返回v2
IFNULL(v1,v2)如果v1不为空则返回v1,否则返回v2
CASE WHEN v1 then r1 … ELSE [default] END如果v1为真,则返回r1,否则返回默认default值
CASE expr WHEN v1 then r1 … ELSE [default] END如果表达式expr为v1 则返回v2否则返回默认值

实操

下面将以一个示例演示以上函数的用法,首先创建一个tb_person的表如下所示:

CREATE TABLE `tb_person` (
  `id` int(11)  NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `age` int(10) NOT NULL,
  `gender` bit(1) DEFAULT NULL,
  `salary` decimal(10,2) DEFAULT NULL,
  `address` varchar(255) NOT NULL,
)

插入一些测试数据查询后如下所示:

mysql> select * from tb_person;
+----+---------+-----+--------+------------+--------------+
| id | name    | age | gender | salary     | address      |
+----+---------+-----+--------+------------+--------------+
|  1 | 张三    |  23 | NULL   |   2500.00 | 中国上海     |
|  2 | 李四    |  24 |        |   4500.00 | 中国北京     |
|  3 | 王武    |  26 |        |   5000.00 | 中国南京     |
|  4 | 赵六    |  28 |       |   15000.00 | 中国南宁     |
|  7 | mike    |  25 |        |   20000.20 | America      |
|  8 | peter |  37 |       |  50000.23 | UN           |
+----+---------+-----+--------+------------+--------------+
6 rows in set (0.00 sec)

数据准备好以后我们再来介绍各个函数的使用

1. IF(expr,v1,v2)

有个需求:员工月薪在5000以上为高薪,月薪在3000以下为底薪。这里就可以使用IF函数如下:

mysql> select name,salary ,if(salary>5000,'高薪','不是高薪') as level  from tb_person;
+--------+------------+--------------+
| name   | salary     | level        |
+--------+------------+--------------+
| 张三   |    2500.00 | 不是高薪     |
| 李四   |    4500.00 | 不是高薪     |
| 王武   |    5000.00 | 不是高薪     |
| 赵六   |   15000.00 | 高薪         |
| mike   |   50000.20 | 高薪         |
| peter  | 1000000.23 | 高薪         |
+--------+------------+--------------+
6 rows in set (0.00 sec)

2. IFNULL(v1,v2)

如果员工薪资为null则显示为0,首先我们添加一条薪资为null的一条新纪录如下:

mysql> insert into tb_person(name,age,address) values('法外狂徒',9999,'unknow');
Query OK, 1 row affected (0.00 sec)

如果直接查询表则会查出来salary为null的那一条记录如下:

mysql> select * from tb_person;
+----+--------------+------+--------+------------+--------------+
| id | name         | age  | gender | salary     | address      |
+----+--------------+------+--------+------------+--------------+
|  1 | 张三         |   23 | NULL   |    2500.00 | 中国上海     |
|  2 | 李四         |   24 |        |    4500.00 | 中国北京     |
|  3 | 王武         |   26 |        |    5000.00 | 中国南京     |
|  4 | 赵六         |   28 |       |   15000.00 | 中国南宁     |
|  7 | mike         |   25 |        |   50000.20 | America      |
|  8 | peter        |   37 |       | 1000000.23 | UN           |
|  9 | 法外狂徒     | 9999 | NULL   |       NULL | unknow       |
+----+--------------+------+--------+------------+--------------+
7 rows in set (0.00 sec)

使用IFNULL如下所示:

mysql> select name,age,ifnull(salary,0) as salary from tb_person;
+--------------+------+------------+
| name         | age  | salary     |
+--------------+------+------------+
| 张三         |   23 |    2500.00 |
| 李四         |   24 |    4500.00 |
| 王武         |   26 |    5000.00 |
| 赵六         |   28 |   15000.00 |
| mike         |   25 |   50000.20 |
| peter        |   37 | 1000000.23 |
| 法外狂徒     | 9999 |       0.00 |
+--------------+------+------------+
7 rows in set (0.00 sec)
mysql>

3. CASE WHEN

此类函数包含有两种形式:

  • 形式一

CASE 列名 WHEN v1 then r1 … ELSE [default] END
有下面一个需求:区分上面员工表高薪与底薪的问题如下:

mysql> select name ,salary, case salary when 2500 then '低' when 4500 then '低' else '高' end as level from tb_person;
+--------------+------------+-------+
| name         | salary     | level |
+--------------+------------+-------+
| 张三         |    2500.00 | 低    |
| 李四         |    4500.00 | 低    |
| 王武         |    5000.00 | 高    |
| 赵六         |   15000.00 | 高    |
| mike         |   50000.20 | 高    |
| peter        | 1000000.23 | 高    |
| 法外狂徒     |       NULL | 高    |
+--------------+------------+-------+
7 rows in set (0.01 sec)
  • 形式二

CASE WHEN 表达式1 then r1 WHEN 表达式2 then r2 else 默认值1 END

我们可以使用这个表达式二完成以下需求:薪资小于等于5000属于低,薪资在5000至15000属于较高,大于15000小于60000 属于高其他为特高。

mysql> select name ,salary ,case when salary <=5000 then '低' when salary >5000 and salary <=15000 then '较高' when salary>15000 and salary<=60000 then '高' else '太高了' end as level from tb_person where salary ;
+--------+------------+-----------+
| name   | salary     | level     |
+--------+------------+-----------+
| 张三   |    2500.00 | 低        |
| 李四   |    4500.00 | 低        |
| 王武   |    5000.00 | 低        |
| 赵六   |   15000.00 | 较高      |
| mike   |   50000.20 | 高   |
| peter  | 1000000.23 | 太高了    |
+--------+------------+-----------+
6 rows in set (0.00 sec)

一般在实际开发中可以根据实际需要选择方式一或或者方式二。我们可以把方式一理解为JAVA中switch 匹配,而方式二就是if条件判断。

程序员必须掌握的SQL知识 20世纪90年代末,随着计算机的普及,数据库系统也日渐流行,许多公司都将关系型数据库作为其核心数据存储技术。由于关系型数据库的普及性,使得大量开发人员开始关注并学习数据库相关技术。本文将从SQL语言基础到高级知识点进行全面剖析,并提供相应的代码实例,帮助大家理解SQL语言的运行机制、优化技巧和一些常用的数据库命令。同时,本文也是对自己SQL学习过程中的收获和经验的总结,希望可以帮助大家快速入门并且提升自己的SQL能力。 阅读详情

相关推荐

【TensorRT】TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型(上篇)

开发了TensorRT C# API 2.0版本,该版本在开发时充分考虑了上一版本应用时出现的问题,并进行了改进。同时在本版本中,我们对接口进行了优化,使用起来更加简单,并同时提供了相关的应用案例,方便开发者进行使用。

grape_yan的博客 3038

初学者关于SQL条件判断函数---CASE WHEN、IF、IFNULL

1、CASE WHEN case when 语句能在SQL语句中放入判断逻辑,类似Java中学习的 if else 语句。 case when 语句分为简单函数和条件表达式。 (1)简单函数 case 字段 when 预期值 then 结果1 else 结果2 end 如果字段等于预期值,则返回结果1,否则返回结果2,end代表语句结束。 例如在表中sex为男改为女,为女改为男 ...

qq_50896786的博客 2万+

CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

CELF(Cost-Effective Lazy Forward selection)算法解析      引言:在社交网络影响力最大化问题的求解过程中,我们往往需要去选择一些目标种子结点作为信息初始传播的源头。贪婪算法在传播效果上的解决可以达到影响的最大化,但是在时间复杂度上面显得确十分糟糕。为此CELF算法应势而生,CELF算法利用了函数次模性的特点,在第一轮选择种子结点时,计算网络中所有节点的边际收益,但将在之后的过程中,不再做网络节点边际收益的重复计算,这相对于传统的贪婪算法,将在时间上得到非常明显的

hahaxq的博客 2477

SQL条件判断

简介: SQL中条件判断表达式有 case when then end,if() 和 ifnull() case有两种格式,即 简单case函数 和 case搜索函数。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。 简单的case函数 SELECT 姓名, (CASE 性别 WHEN "男" THEN 1 WHEN "女" THEN 0 END )性别 FROM 教师表; case选择函数 SELECT 姓名, (C

qq_36146167的博客 1万+

逻辑漏洞:水平越权、垂直越权靶场练习

水平越权和垂直越权是组织中常见的管理问题,指的是员工在组织中所拥有的权力和责任超出其职位所应具备的范围。 水平越权是指员工在同一级别的职位上超越了其同事的权力和责任范围,通常表现为某个员工在团队中承担了过多的任务或权力,导致其他同事感到不公平或不满。 垂直越权则是指员工在组织中超越了其职位等级的权力和责任范围,通常表现为员工在没有得到上级批准的情况下做出决策或行动,可能会导致组织内部的混乱和冲突。

qq_68163788的博客 2470

[Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

分类(Classification)属于有监督学习(Supervised Learning)中的一类,它是数据挖掘、机器学习和数据科学中一个重要的研究领域。分类模型类似于人类学习的方式,通过对历史数据或训练集的学习得到一个目标函数,再用该目标函数预测新数据集的未知属性。本章主要讲述分类算法基础概念,并结合决策树、KNN、SVM分类算法案例分析各类数据集,从而让读者学会使用Python分类算法分析自己的数据集,研究自己领域的知识,从而创造价值。 19.1 分类 19.1.1 分类模型 与前面讲述的聚类模型类似

杨秀璋的专栏 2万+

SQL查询时使用判断语句

需要判断的值,判断1的结果条件(if),符合判断1的结果,判断2的结果条件(else if),符合判断2的结果,(else)注意:NVL()是oracle数据库中对字段的非空校验,如果字段名为空,则赋值为逗号后面的值。注意:ifnull(“字段名”, 值) – 非空验证 如果字段为空就输出后面的值。

strggle_bin的博客 2760

SCADA|用KingSCADA实现设备台账的查询功能

以上为用KingSCADA实现设备台账的查询功能,另外还有一些细节功能,比如当点击增加按钮时弹出的信息窗口内的信息希望是在选中的某行信息,只要找到差不多的设备,修改个别参数即可,避免增加时弹出空白页,所有信息都需要填写。以上为实现设备台账查询的最简单实现,实际项目中可能会更复杂,你做过哪些设备台账或相关的功能,有比较好的创意或高难度功能方法,欢迎在留言区评论,或在交流群探讨,互通有无,共同进步。首先完成界面的组态工作,主要是通过查询按钮,查询SQLServer数据库的设备台账数据,然后填充到报表内。

做有价值的事,积累有价值的笔记! 481

SQL中的单条件判断函数IF,和多条件判断CASE WHEN的用法

在SQL中,条件判断函数IF用于根据指定的条件返回不同的值。

Senye_ing的博客 1万+

简要介绍 | 雷达穿墙成像及其应用场景

本文简要介绍了雷达穿墙成像技术的原理、研究现状、挑战与未来展望,希望能为相关领域的研究与应用提供参考。具有广泛的应用前景。本文将详细介绍雷达穿墙成像的原理,以及其在不同应用场景中的实践。逆时偏移算法(Reverse-Time Migration, RTM)雷达穿墙成像技术是一种先进的遥感技术,具有。的能力,可用于探测室内目标。安全与救援、建筑结构检测等领域。雷达穿墙成像技术的核心原理是。是Green函数,表示从接收点。雷达穿墙成像及其应用场景。雷达穿墙成像及其应用场景。目标识别与定位准确性。

NLOS的博客 2233

基于 Simulink 的单相 PWM 整流器(四象限变流器)在高铁辅助电源系统中的建模与仿真实战教程

这是一份基于 Simulink 的实战教程。在高铁牵引供电与辅助电源系统中,单相 PWM 整流器(又称四象限变流器,4QC)是极其核心的“绿色电源”枢纽。传统的二极管整流器虽然结构简单,但会导致严重的输入电流畸变和低功率因数,对电网造成极大的谐波污染。而 PWM 整流器通过高频主动控制,不仅能将单相交流电转换为平稳的直流电,还能实现输入电流正弦化、单位功率因数(PF=1)运行,并支持能量双向流动(如列车再生制动时的能量回馈)。本教程将带你从数学模型出发,搭建一套高性能的电压电流双闭环控制系统。

amy_mhd的博客 47

SQL条件函数

使用SQL的条件函数实现分段统计的功能

miserable_world的博客 1080

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Mysql自学笔记(黑马程序员)】基础篇(五)SQL常用函数及示例

本篇文章是关于SQL中的常用函数介绍,包括聚合函数、字符串函数、数值函数、日期函数以及流程函数,并列举相关示例与代码对函数功能加以介绍。

m0_50695189的博客 1428

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

程序员需掌握的SQL语法基础(一)

1.前言 平时项目开发中我们每一个人都经历过业务的CRUD操作,这些CRUD操作最终结果都是进行数据库的读写操作,在多种数据库中最常见使用的就是关系型数据库。而关系数据库最常见使用就是Mysql数据库了,网上关于Mysql数据库的博客已经很多了,但是作为一个程序员何不记录自己学习Mysql的点点滴滴呢?要知道纸上得来终觉浅,绝知此事要躬行。唯有靠我们自己多动手、多学习充实自己,才能在以后面试中立于不败之地,学习Mysql语法之前需要先安装Mysql,这里可以参考我之前写的博客 基于Centos7的Linu

GalenGao 2774

【195期】MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 3.5 分钟。来自:blog.youkuaiyun.com/mu_wind/article/details/93976316前言在...

良月柒 1099

程序员需掌握的SQL数学函数、字符串函数(四)

前言 MySQL 中的函数包括:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数等,下面将介绍MySQL中这些函数的功能与用法。 1.数学函数 MySQL支持多种数学类型的函数,它们包括:绝对值函数、三角函数(正弦函数、余弦函数、正切函数、余切函数)、对数函数、随机函数等。一般在日常开发中使用到数学函数的场景几乎没有,一般我们都是在Java程序中处理好相关的数学计算后,在存储到MySQL中。 2. 绝对值函数ABS和圆周率函数PI ...

GalenGao 737

程序员需掌握的SQL时间函数(五)

文章目录前言1. 获取当前日期的函数和获取当前时间的函数2. 获取当前日期时间3. UNIX时间转换4. 月份函数5. 天数函数6. 年、月、周、日、时、分、秒函数7. 计算日期和时间函数8 时间格式化 前言 日期和时间函数是用来处理日期和时间函数,一般开发中我们总会遇到这样的需求:截止到当前时间订单的数量之和等等,下面将详细介绍各种日期和时间函数,下面列出了MySQL中常用的日期和时间函数。 1. 获取当前日期的函数和获取当前时间的函数 获取当前日期有CURRENT_DATE() 或CURDATE()

GalenGao 507

程序员需要掌握的sql技能

一个优秀的java开发工程师需要掌握深度和广度兼备的 SQL 技能,不仅要精通基础查询,还要熟悉性能优化、复杂查询设计、数据库架构等高级内容。

还在活水泥的未来包工头 743

程序员需了解的SQL之JSON函数查询与修改(七)

前言 MySQL从5.7.8以后引入了JSON数据类型,对于JSON文档的操作除了简单的读和写之外还有很多处理JSON的函数。

GalenGao 1702

sql中减法函数_SQL 中的聚集函数?

SQL 中的聚集函数?SQL 函数包含了算术函数,字符串函数,日期函数,转换函数。还有一函数,叫做聚集函数。SQL 聚集函数是对一组数据进行汇总的函数,输入是一组数据的集合,输出是单个值。有哪些聚集函数 SQL 中的聚集函数,有最大值,最小值,平均值。Count 使用例子:查询heros 中hp_max 大于6000 的英雄。SELECT COUNT(*) FROM heros WHERE hp_...

weixin_39725873的博客 4685

Java 程序员常犯的 10 个 SQL 错误!

一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。

2401_84408845的博客 853

SQL笔记 -- 黑马程序员

执行时机不同: where是分组之前进行过滤不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同::where不能对聚合函数进行判断,而having可以。分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。注意:修改语句的条件可以有,如果没有,则修改整张表的所有数据。删除指定表,并重新创建该表。NULL 不进行计算。查询当前数据库所有表。查询指定表的建表语句。

weixin_74814064的博客 1554

程序员必备之SQL语句(Essential SQL Statements for Programmers)

SQL(Structured Query Language)是一种用于管理数据库语言(RDBMS)的标准编程语言‌。其主要功能包括数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)‌

Linux运维老纪的博客 1039

SQL SERVER开窗函数

作为一名开发人员来讲,我感觉在职场白混了好多年,可能是自己真的没有进取的精神吧,看了《程序员的SQL金典》这本电子书,真的让我学到了不少知识,真心喜欢这本电子书,书中讲解的内容比较好懂,也比较实用。谢谢作者的辛勤汗水:)。 今天将要介绍SQL Sever的开窗函数,何谓开窗函数,不懂吧。反正对于我来说,我是摸不着头脑了,第一次听说过。那么,什么是开窗函数,其实可以理解为是聚合函数的...

ddkyij9397的博客 1335
上一篇: Redis连接异常报JedisConnectionException: Could not get a resource from the pool
下一篇: 程序员需了解的SQL之JSON函数查询与修改(七)
Galen-gao
博客等级 码龄9年 931粉丝 137原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值