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条件,请尝试一下。

阅读更多:

helenanders26图片

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

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/helenanders26/sql-201-how-to-add-if-else-logic-to-sql-queries-41j ,版权归作者所有,未经许可,不得转载
你可能还喜欢