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将AlbumId列中存储的值与文字值1进行比较,以测试它们是否相等。只返回满足条件的行。
比较两个值时,必须确保它们是相同的数据类型。你应该比较数字和数字,字符串和字符串,等等。
如果比较不同数据类型中的值,例如字符串和数字,SQLite必须执行隐式数据类型转换,但一般来说,应该避免这样做。
可以使用逻辑运算符组合表达式。例如,要获取相册1中长度大于200000毫秒的曲目,请使用以下语句:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
试试看
该语句使用了两个表达式albumid=1和毫秒>250000。它使用AND逻辑运算符组合这些表达式。
translate failed
带有LIKE运算符示例的SQLite WHERE子句
有时,您可能记不清要搜索的数据。在本例中,使用LIKE运算符执行不精确搜索。
例如,要查找由Smith组成的轨迹,请使用LIKE运算符,如下所示:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
试试看
你可以看到由R.A.史密斯·迪塞尔、阿德里安·史密斯等创作的曲目。
带有IN运算符示例的SQLite WHERE子句
IN运算符允许您检查值是否在逗号分隔的值列表中。例如,要查找媒体类型id为2或3的曲目,请使用IN运算符,如下所示:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
试试看
在本教程中,您学习了如何使用SQLite WHERE子句使用比较运算符和逻辑运算符筛选最终结果集中的行。