SQL 201:如何将IF-ELSE逻辑添加到SQL查询中
CASE是SQLs对其他编程语言IF-ELSE语句的回答。如果您需要测试条件并返回值CASE是您需要的表达式。
介绍
句法
CASE有一个条件
具有多种条件的CASE
限制和陷阱
介绍
在这个例子中,我将把最畅销的Sega Genesis游戏数据集的一部分加载到SQL Server中。
句法
- 每个'WHEN'行测试是否满足条件,如果有,它返回'RESULT',否则它继续检查下一个条件。
- 如果没有满足任何指定条件,则返回'ELSE'之后指定的内容。
- 每个CASE表达式都需要以'END'结束。
- 可选的附加功能是在结果中添加列名。
case when <condition1> then <result1> when <condition2> then <result2> when <condition3> then <result3> else <result> end as <columnname>;
这通过示例更有意义,所以让我们开始使用我们的Sega Genesis数据集。
CASE有一个条件
在我们的第一个例子中,我们使用CASE来测试一个条件。我们想要创建一个新列,显示游戏是否来自Sonic系列。
- 当游戏名称包含字符串'Sonic'时,表达式返回'Y',否则返回'N'。
- 最后一步是创建列名称'Sonic Series'
select game, year, case when game like 'sonic%' then 'Y' else 'N' end as 'Sonic Series' from sega_sales order by 'Sonic Series' desc
具有多种条件的CASE
在这个例子中,我们使用CASE来测试多个条件。我们想要创建一个新列,显示全球销售额是低,中还是高。
- 当游戏全球销售额大于或等于4.00时,表达式返回“高”,如果不是,则继续进行下一步。
- 如果游戏全球销售额小于或等于3.99且大于2.00,则表达式返回“mid”。
- 如果游戏全球销售不满足这些条件中的任何一个,则表达式返回“低”。
- 最后一步是创建列名称'Sales Range'
select game, global, case when global >= 4.00 then 'high' when global > 2.00 and global <= 3.99 then 'mid' else 'low' end as 'Sales Range' from sega_sales
限制和陷阱
CASE Expression功能强大,简化了评估条件。但是,有一些限制要注意:
- 在SQL Server中,最多只能有10个嵌套级别。
- CASE表达式无法检查NULL。
- 表达式按指定顺序依次工作,因此当条件满足时它将停止。
已经说过CASE表达式是灵活的,可以在ORDER BY,views,with HAVING和UPDATE数据的聚合中使用。如果需要在SQL中执行IF-ELSE条件,请尝试一下。
阅读更多:
SQL 201:关于SQL JOIN的所有内容
海伦安德森·18年11月17日·3分钟阅读
#sql #beginners #数据 #数据库
SQL 101:关系数据库基础知识
Helen Anderson·18年1月1日·2分钟阅读
#sql #beginners #数据库 #数据
这篇文章最初出现在helenanderson.co.nz
照片来自Pexels的Nidhi Tokas Dahiya