Skip to main content

SQLite大小写表达式:简单大小写和搜索大小写

SQLite CASE表达式计算条件列表,并根据计算结果返回表达式。

CASE表达式类似于其他编程语言中的IF-THEN-ELSE语句。

可以在任何接受有效表达式的子句或语句中使用大小写表达式。例如,可以在WHERE、ORDER BY、HAVING、SELECT等子句和SELECT、UPDATE和DELETE等语句中使用大小写表达式。

SQLite提供了两种形式的大小写表达式:简单大小写和搜索大小写。

SQLite简单大小写表达式

简单大小写表达式将表达式与表达式列表进行比较,以返回结果。下面说明了简单大小写表达式的语法。

CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END

简单CASE表达式将CASE表达式与第一个WHEN子句WHEN表达式_1中出现的表达式进行比较,以表示相等。

如果case表达式等于when表达式_1,则简单case将在相应的THEN子句中返回表达式,这就是结果_1。

否则,简单CASE表达式会将CASE_表达式与下一个WHEN子句中的表达式进行比较。

如果没有case表达式与when表达式匹配,case表达式将在else子句中返回结果_else。如果省略ELSE子句,CASE表达式将返回NULL。

简单的CASE表达式使用短路求值。换句话说,它返回结果,并在找到匹配项后立即停止评估其他条件。

简单的例子

让我们看看示例数据库中的customers表。

customers

假设,您必须对客户群进行报告,其逻辑是,如果客户位于美国,则该客户属于国内组,否则该客户属于国外组。

要生成此报告,请在SELECT语句中使用简单的CASE表达式,如下所示:

SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;

试试看

SQLite大小写表达式

搜索的大小写表达式计算表达式列表以确定结果。请注意,简单的大小写表达式仅比较相等,而搜索的大小写表达式可以使用任何形式的比较。

下面说明了搜索的大小写表达式的语法。

CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END

搜索的大小写表达式按照指定的顺序计算布尔表达式,如果表达式的计算结果为true,则返回相应的结果。

如果没有表达式的计算结果为true,则搜索的case表达式将返回ELSE子句中的表达式(如果指定)。如果省略ELSE子句,则搜索的大小写表达式将返回NULL。

与简单事例表达式类似,当满足条件时,搜索的事例表达式停止计算。

搜索案例示例

我们将使用轨迹表进行演示。

假设您想根据轨迹的长度对其进行分类,例如小于一分钟,则轨迹较短;在1到5分钟之间,赛道是中等的;超过5分钟,赛道很长。

要实现这一点,请使用搜索的大小写表达式,如下所示:

SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;

试试看

SQLite Searched CASE example

在本教程中,您已经了解了SQLite CASE表达式,可以在SQL查询中形成条件逻辑。