Skip to main content

SQLite WHERE-筛选结果集中的行

SQLite WHERE子句简介

WHERE子句是SELECT语句的可选子句。它出现在FROM子句之后,作为以下语句:

SELECT
column_list
FROM
table
WHERE
search_condition;

在本例中,将WHERE子句添加到SELECT语句中,以过滤查询返回的行。使用WHERE子句计算SELECT语句时,SQLite使用以下步骤:

WHERE中的搜索条件具有以下形式:

left_expression COMPARISON_OPERATOR right_expression

例如,可以按如下方式形成搜索条件:

WHERE column_1 = 100;

WHERE column_2 IN (1,2,3);

WHERE column_3 LIKE 'An%';

WHERE column_4 BETWEEN 10 AND 20;

除了SELECT语句外,还可以在UPDATE和DELETE语句中使用WHERE子句。

SQLite比较运算符

比较运算符测试两个表达式是否相同。下表说明了可用于构造表达式的比较运算符:

SQLite逻辑运算符

逻辑运算符允许您测试某些表达式的真实性。逻辑运算符返回1、0或空值。

请注意,SQLite不提供布尔数据类型,因此1表示TRUE,0表示FALSE。

下表说明了SQLite逻辑运算符:

SQLite WHERE子句示例

我们将使用示例数据库中的tracks表来说明如何使用WHERE子句。

相等运算符(=)是最常用的运算符。例如,以下查询使用WHERE子句等式运算符查找唱片集id 1中的所有曲目:

SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;

试试看

SQLite WHERE clause

SQLite将AlbumId列中存储的值与文字值1进行比较,以测试它们是否相等。只返回满足条件的行。

比较两个值时,必须确保它们是相同的数据类型。你应该比较数字和数字,字符串和字符串,等等。

如果比较不同数据类型中的值,例如字符串和数字,SQLite必须执行隐式数据类型转换,但一般来说,应该避免这样做。

可以使用逻辑运算符组合表达式。例如,要获取相册1中长度大于200000毫秒的曲目,请使用以下语句:

SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;

试试看

SQLite WHERE clause comparison operator

该语句使用了两个表达式albumid=1和毫秒>250000。它使用AND逻辑运算符组合这些表达式。

SQLite WHERE multiple conditions

translate failed

带有LIKE运算符示例的SQLite WHERE子句

有时,您可能记不清要搜索的数据。在本例中,使用LIKE运算符执行不精确搜索。

例如,要查找由Smith组成的轨迹,请使用LIKE运算符,如下所示:

SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;

试试看

SQLite WHERE with LIKE operator

你可以看到由R.A.史密斯·迪塞尔、阿德里安·史密斯等创作的曲目。

带有IN运算符示例的SQLite WHERE子句

IN运算符允许您检查值是否在逗号分隔的值列表中。例如,要查找媒体类型id为2或3的曲目,请使用IN运算符,如下所示:

SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);

试试看

SQLite WHERE with IN operator

在本教程中,您学习了如何使用SQLite WHERE子句使用比较运算符和逻辑运算符筛选最终结果集中的行。