
浅谈SQL的if then else
当处理条件性语句和在SQL中基于某些条件的满足而执行代码或语句时,我们可以使用SQL中的条件性语句。其中一个基本和关键的功能是if then else语句,在这个语句中,我们检查表达式或条件,包括变量比较,从查询中检索的数据比较,或任何字面价值或从函数或存储过程参数中检索的参数变量价值检查。
如果条件或表达式评估为真或可以推断为真值,那么在BEGIN和END子句之间或THEN子句之后提到的语句将被执行,如果条件或表达式评估为假或类似假的值,那么ELSE子句之后提到的语句将被执行。在这篇文章中,我们将学习SQL中if then else语句的一些实现方法,这些方法可以帮助我们在SQL中执行条件行为,并通过一些例子来说明。
语法
if then else 语句的语法如下所示
IF condition or expression evaluating to a boolean value
BEGIN
{ statements to be executed if the condition evaluates to true }
END
ELSE
BEGIN
{ statements to be executed if the condition evaluates to false }
END
语法由IF、BEGIN、END和ELSE等关键字组成。除此之外,有必要在IF关键字后面提到条件或表达式,最终评估为一个布尔值。此外,如果布尔表达式或条件被评估为真,则应在IF关键字和表达式之后的BEGIN和END关键字之间提到要执行的语句,如果布尔表达式或条件被评估为假,则应在THEN关键字之后的BEGIN和END关键字之间提到要执行的语句。
例子
让我们考虑一个现有的名为educba_articles的表,它存在于我们名为educba的数据库中。我们将通过执行下面的查询语句来检查该表的内容和结构------。
SELECT * FROM educba_articles;
执行上述查询语句的输出结果如下----。

现在,我们要检查已经提交的文章的总成本之和。为此,我们将通过计算率和页数的乘积来计算单篇文章的成本。此外,我们将使用SUM()函数来计算总费用。以下是我们的查询语句-
SELECT
SUM(` rate` * ` pages`)
FROM
educba_articles
WHERE
` status` = "Submitted";
执行上述查询语句的输出结果如下----。

现在,我们将使用上述语法中提到的IF和ELSE关键字,这些关键字是以下列方式指定的,以显示适当的输出 -
BEGIN
DECLARE @totalCost INT;
SELECT
@totalCost = SUM(` rate` * ` pages`)
FROM
educba_articles
WHERE
` status` = "Submitted";
SELECT @totalCost;
IF @totalCost > 10000
BEGIN
PRINT 'The submitted articles seem to be great in terms of quality and quantity!';
END
ELSE
BEGIN
PRINT 'The submission rate needs to be increased!';
END
END
执行上述查询语句的输出如下:由于总成本不超过10000,流程执行else块中提到的语句,打印出 "提交率需要增加!"的信息 -

BEGIN
DECLARE @totalCost INT;
SELECT
@totalCost = SUM(` rate` * ` pages`)
FROM
educba_articles
WHERE
` status` = "Pending";
SELECT @totalCost;
IF @totalCost > 10000
BEGIN
PRINT 'The writers need to speed up with their work!';
END
ELSE
BEGIN
PRINT 'More topics and work should be allocated to the writers!';
END
END
执行上述查询语句的输出结果如下 -

在IF关键字中提到的表达式评估为真,因为待处理文章的总成本超过了10000,然后if块中提到的消息被打印在输出中。让我们执行下面的查询语句来确认待处理物品的总金额,并交叉检查我们的IF和ELSE语句的工作。
SELECT
SUM(` rate` * ` pages`)
FROM
educba_articles
WHERE
` status` = "Pending";
执行上述查询语句的输出结果如下

使用 CASE 语句
我们可以选择使用CASE语句来执行与上面显示的IF-ELSE关键字相同的功能,在一个单一的查询语句中压缩实现。考虑同样的例子,对于超过10000元的待处理费用,打印 "作者需要加快工作进度!"的信息。我们将使用下面的查询语句来实现case语句来实现SQL中的if else功能------。
SELECT
CASE
WHEN SUM(` rate` * ` pages`) > 10000
THEN 'The writers need to speed up with their work!'
ELSE 'More topics and work should be allocated to the writers!'
END AS output
FROM
educba_articles
WHERE ` status` = "Pending" ;
执行上述查询语句的输出结果如下,与使用if-else关键字的输出结果相同 -

让我们也执行case语句来实现我们第一个提交文章的例子----。
SELECT
CASE
WHEN SUM(` rate` * ` pages`) > 10000
THEN 'The submitted articles seem to be great in terms of quality and quantity!'
ELSE 'The submission rate needs to be increased!'
END AS output
FROM
educba_articles
WHERE ` status` = "Submitted" ;
执行上述查询语句的输出结果如下----。

结论 - SQL if then else
我们可以在SQL中使用IF和ELSE关键字,根据评估为布尔值的条件来执行语句的条件性执行。另外,我们也可以使用CASE语句来实现SQL中的if then else功能。