SQL CASE语句

时间:2020-02-23 14:32:24  来源:igfitidea点击:

在本文中,我们将了解SQL CASE语句如何工作。

什么是SQL CASE语句?

每种编程语言(例如Java,Python,C,C++等)都包含各种形式的条件语句,以根据提到的条件来验证和选择操作。

让我们通过一个例子来理解这一点。

在零售商店中,各种顾客来购买不同的必需食品和配件。
零售商决定他要一种可以在以下条件下以自动化方式运行的软件

"只要且仅当他们将要购买的商品的总成本超过20美元时,每个客户才能获得所购买商品的5%折扣。
"

因此,程序员或者开发人员将根据首选语言使用Case语句,并设置条件,如果总价超过20美元,则对所购买的物品应用5%的折扣。

因此,从上面的示例中,您必须都对Case语句有所了解。

是的,您猜对了!

SQL CASE语句帮助我们在数据上应用并设置一些条件,然后根据条件的满足提供结果/操作。
CASE语句返回该值或者针对特定条件的满足执行所提及的操作。

现在,让我们在下面的部分中了解SQL CASE语句的工作方式。

CASE语句的语法

如果满足第一个条件,则" SQL CASE语句"将返回特定值,否则将检查下一个条件,然后过程继续。

语法:

CASE
  WHEN condition-1 THEN result-1
  WHEN condition-2 THEN result-2
  .
  .
  .
  WHEN condition-N THEN result-N
  ELSE default-result
END;

  • 如果没有条件为真,则CASE语句返回ELSE部分中指定的值。

  • 此外,如果我们不提供任何ELSE条件,并且如果所有条件都不为TRUE,则CASE语句将返回NULL值。

通过示例实现SQL Case语句

其中我们将使用各种SQL查询和子句来实现SQL Case语句。

让我们首先使用SQL Create查询创建一个表,然后通过SQL Insert查询将值插入该表中。

create table Info(id integer, Cost integer, city varchar(200));
insert into Info(id, Cost,city) values(1, 100,"Pune");
insert into Info(id, Cost,city) values(2, 50, "Satara");
insert into Info(id, Cost,city) values(3, 65,"Pune");
insert into Info(id, Cost,city) values(4, 97,"Mumbai");
insert into Info(id, Cost,city) values(5, 12,"USA");

因此,我们创建了一个表格-"信息",并将值添加到了如上所述创建的列中。

带CASE语句的SQL SELECT查询

我们执行SQL SELECT查询,以根据CASE语句中所述的某些条件显示数据值,如下面的代码所述。

例:

SELECT city, Cost,
CASE
  WHEN Cost < 20 THEN 'Displaying price less than 20.'
  ELSE 'Price rates above 20'
END AS Price_Rate
FROM Info;

如上所示,当我们执行查询时,它将显示"城市"和"成本"的列值。
它将创建一个新列" Price_Rate"以显示满足条件的结果。

使用CASE语句的SQL Update查询

现在,让我们尝试使用CASE语句执行SQL Update查询。

例:

在下面的示例中,我们传递了UPDATE查询,以将在CASE条件下传递的城市的名称更改为指定的值。

UPDATE Info 
SET city  = CASE city
 WHEN 'Pune' THEN 'POONA' 
 WHEN 'USA' THEN 'UNITED NAIONS' 
 ELSE  'San Franceco'
END;

在将CASE语句与SQL查询结合在一起之后,现在让我们尝试使用一些SQL子句执行它。

带有CASE语句的SQL ORDER BY子句

其中我们使用CASE语句执行了ORDER BY子句。

我们使用SELECT查询从表格中选择所有数据值-"信息"。
此外,我们添加了带有CASE语句的ORDER BY子句,该子句声明了以下条件。

  • 仅当城市值为"浦那"时,才以"成本"的升序显示数据值。

例:

Select *
 from Info
 ORDER BY  CASE city
WHEN 'Pune' THEN Cost End;