Skip to main content

通过实例说明SQLite在算子之间的应用

SQLite中间操作符简介

BETWEEN运算符是一个逻辑运算符,用于测试值是否在值的范围内。如果该值在指定范围内,则BETWEEN运算符返回true。BETWEEN运算符可用于SELECT、DELETE、UPDATE和REPLACE语句的WHERE子句中。

下面说明了SQLite BETWEEN运算符的语法:

test_expression BETWEEN low_expression AND high_expression

在这种语法中:

请注意,BETWEEN运算符是包含的。当test表达式小于或等于high表达式且大于或等于low_表达式的值时,返回true:

test_expression >= low_expression AND test_expression <= high_expression

要指定独占范围,请使用大于(>)和小于运算符(<)。

请注意,如果BETWEEN运算符的任何输入为NULL,则结果为NULL,或者准确地说是未知的。

要对BETWEEN运算符的结果求反,请使用NOT BETWEEN运算符,如下所示:

test_expression NOT BETWEEN low_expression AND high_expression

如果test表达式的值小于low表达式的值或大于high_表达式的值,则NOT BETWEEN返回true:

test_expression < low_expression OR test_expression > high_expression

SQLite在运算符示例之间

我们将使用示例数据库中的发票表进行演示:

数值之间的SQLite示例

以下报表显示的发票总额介于14.96和18.86之间:

SELECT
InvoiceId,
BillingAddress,
Total
FROM
invoices
WHERE
Total BETWEEN 14.91 and 18.86
ORDER BY
Total;

以下是输出:

SQLite BETWEEN Numbers example

如您所见,结果集中包括总计为14.91或18.86的发票。

SQLite不在数值之间,例如

要查找总额不在1和20之间的发票,请使用not BETHEN运算符,如以下查询所示:

SELECT
InvoiceId,
BillingAddress,
Total
FROM
invoices
WHERE
Total NOT BETWEEN 1 and 20
ORDER BY
Total;

下图显示了输出:

SQLite NOT BETWEEN Numbers example

如输出中清楚显示的,结果包括总额小于1且大于20的发票。

SQLite日期间示例

以下示例查找发票日期为2010年1月1日和2010年1月31日的发票:

SELECT
InvoiceId,
BillingAddress,
InvoiceDate,
Total
FROM
invoices
WHERE
InvoiceDate BETWEEN '2010-01-01' AND '2010-01-31'
ORDER BY
InvoiceDate;

以下是输出:

SQLite BETWEEN Dates example

SQLite不是日期之间的示例

以下报表查找日期不在2009年1月3日至2013年12月1日之间的发票:

SELECT
InvoiceId,
BillingAddress,
date(InvoiceDate) InvoiceDate,
Total
FROM
invoices
WHERE
InvoiceDate NOT BETWEEN '2009-01-03' AND '2013-12-01'
ORDER BY
InvoiceDate;

结果如下:

SQLite NOT BETWEEN Dates example

在本教程中,您学习了如何使用SQLite BETWEEN操作符来测试一个值是否在一个值范围内