📜  PostgreSQL Between condition的工作原理

📅  最后修改于: 2020-11-30 09:00:33             🧑  作者: Mango

PostgreSQL Between condition的工作原理

在本节中,我们将了解PostgreSQL Between condition的工作原理,该条件与WHERE子句一起使用,以从两个已定义条件之间的表中选择数据。我们还将看到带有数字和日期值的Between运算符和带有Not运算符Between运算符示例

PostgreSQL之间的条件介绍

PostgreSQL之间条件用于定义如何从特定范围内的表达式检索值。换句话说,我们可以说介于条件被用来将一个值与一个值范围进行匹配。

PostgreSQL之间的条件也称为PostgreSQL之间的运算符

PostgreSQL之间的条件语法

PostgreSQL中,“中间条件”可以与SELECTINSERTUPDATEDELETE命令一起使用。

expression BETWEEN value1 AND value2;    

要么

expression BETWEEN low AND high;

如果值大于或等于(> =)等于值1或下限值,并且小于或等于(<=)等于值2或上限值,则表达式返回true;否则,表达式返回true。否则,它返回false。

我们还可以使用大于或等于(> =)小于或等于(<=)运算符来重写Between运算符符,如以下语法所示:

expression >= value1 and value <= value2

假设我们要查找超出范围的值。在这种情况下,我们可以将NOT运算符BETWEEN条件结合起来,如下面的语法所示:

Expression NOT BETWEEN low AND high;

下面的语法与上面的语法等效,它使用NOT和BETWEEN运算符:

Expression < low OR value > high

在以上语法中,我们使用了以下参数:

Parameter Description
Expression It is used to define a column or field.
value1 and value2 These values define an inclusive range that expression is compared to.

条件之间的PostgreSQL示例

让我们看不同的例子来了解PostgreSQL条件间的工作原理:

条件之间的PostgreSQL示例:带有数值

在下面的示例中,我们将显示如何将BETWEEN条件与数字值一起使用。

为此,我们从Javatpoint数据库中获取Customer表,以获取年龄在23到26岁之间的客户。

如下面的命令所示,我们正在使用带有WHERE子句Between运算符

SELECT cust_id, cust_name, Cust_age
FROM customer
WHERE cust_age BETWEEN 23 AND 26
ORDER BY cust_age DESC;

输出量

执行上述命令后,我们将获得以下输出:

在上面的命令中,我们也可以使用大于或等于(> =)小于或等于(<=)运算符代替BETWEEN运算符。与上述命令相比,此命令将产生类似的结果:

SELECT cust_id, cust_name, Cust_age
FROM customer
WHERE cust_age >=23 
AND cust_age <=26
ORDER BY cust_age DESC;

输出量

成功执行以上命令后,我们将得到以下结果:

如上图所示,两个输出都提供相似的结果,但是与大于或等于(> =)小于或等于相比,使用PostgreSQL Between条件使命令更易于阅读且更高效。 (<=)个运算符

条件之间的PostgreSQL示例:带有日期

我们将看到如何在BETWEEN运算符使用Date值以ISO 8601格式定义字面量日期:YYYY-MM-DD

在这里,我们从Javatpoint数据库获取部门表。

在以下示例中,我们使用“之间运算符”获取在2017-10-12至2020-06-22之间加入特定部门的员工的信息。

SELECT emp_fname, dept_id, dept_name, joining_date
FROM department
WHERE joining_date BETWEEN '2017-10-12' AND '2020-06-22'
ORDER BY dept_id DESC;

输出量

成功执行以上命令后,我们将得到以下结果:


注意:请确保该范围将始终具有较低的值,因为如果我们从较高的值开始给出范围,则会给出空的结果集。

例如:如果在上面的命令中以较高值(2020-06-22)较低值(2017-10-12)提供范围:

SELECT emp_fname, dept_id, dept_name, joining_date
FROM department
WHERE joining_date BETWEEN '2020-06-22' AND '2017-10-12'
ORDER BY dept_id DESC;

输出量

执行上述命令后,我们将获得空表:

在PostgreSQL中,我们也可以使用大于或等于(> =)小于或等于(<=)运算符代替BETWEEN运算符。然后,与上述命令相比,该命令将给出类似的结果:

SELECT emp_fname, dept_id, dept_name, joining_date
FROM department
WHERE joining_date >='2017-10-12'
AND joining_date <='2020-06-22'
ORDER BY dept_id DESC;

输出量

执行上述命令后,我们将得到以下结果:

在执行这两个命令之后,与使用大于或等于(> =)小于或等于(<=)运算符的命令相比,我们可以看到使用Between运算符的命令更具可读性和更短。

换句话说,我们可以说PostgreSQL使用Between运算符比使用其他运算符更快地实现了该命令。

在条件之间使用NOT运算符的示例

PostgreSQL中,我们可以在WHERE子句中将NOT运算符与Between运算符一起使用,以从已定义条件与PostgreSQL之间的条件矛盾的表中获取数据。

如果我们希望获得年龄不在23到26岁之间的那些客户,可以使用以下命令:

SELECT cust_id, cust_name, Cust_age
FROM customer
WHERE cust_age NOT BETWEEN 23 AND 26
ORDER BY cust_age DESC;

输出量

执行上述命令后,我们将获得以下输出:

在下面的示例中,我们将大于(>)和小于(<)运算符与OR运算符符一起使用,而不是使用NOT BETWEEN / AND运算符。下面的命令等效于上面的SELECT查询:

SELECT cust_id, cust_name, Cust_age
FROM customer
WHERE cust_age < 23  
OR cust_age >26
ORDER BY cust_age DESC;

输出量

执行上述命令后,我们将得到以下结果:

总览

PostgreSQL条件间部分中,我们学习了以下主题:

  • 使用PostgreSQL Between运算符可将一个值与一系列值进行匹配。
  • 我们使用介于条件之间值来从特定表中获取数值
  • 我们使用了条件间条件来从特定表中获取数据值
  • 我们将NOT运算符PostgreSQL Between运算一起使用,以获取不满足Between条件的那些值。