Mariadb BETWEEN...AND 运算符的基础用法与实例

MariaDB BETWEEN...AND 运算符是一个条件运算符,它用于判断一个值是否在指定的两个值之间,即是否大于等于第一个值,且小于等于第二个值。

发布于

MariaDB BETWEEN...AND 运算符是一个条件运算符,它用于判断一个值是否在指定的两个值之间,即是否大于等于第一个值,且小于等于第二个值。该运算符可以用于过滤查询的结果,或者进行范围的判断。

语法

MariaDB BETWEEN...AND 运算符的语法如下:

expr BETWEEN min AND max

其中,expr 参数是要判断的值,可以是一个列名,一个常量,一个函数,或者一个表达式。minmax 参数是指定的两个值,可以是任意的值,但必须是同一种数据类型。如果 expr 参数是 NULL,那么 MariaDB BETWEEN...AND 运算符会返回 NULL。如果 expr 参数在 minmax 参数之间,那么 MariaDB BETWEEN...AND 运算符会返回 TRUE。如果 expr 参数不在 minmax 参数之间,那么 MariaDB BETWEEN...AND 运算符会返回 FALSE

实例

下面是一些使用 MariaDB BETWEEN...AND 运算符的实例:

判断一个常量是否在两个常量之间

SELECT 5 BETWEEN 1 AND 10 AS result;

输出结果如下:

+--------+
| result |
+--------+
|      1 |
+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 5 这个常量是否在 110 这两个常量之间,得到 1。这是因为 MariaDB BETWEEN...AND 运算符返回的是一个布尔值,其中 1 表示 TRUE0 表示 FALSE。在这个例子中,5 是在 110 之间,因此返回 TRUE

判断一个表达式是否在两个表达式之间

SELECT 2 * 3 BETWEEN 1 + 2 AND 3 * 4 AS result;

输出结果如下:

+--------+
| result |
+--------+
|      1 |
+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 2 * 3 这个表达式是否在 1 + 23 * 4 这两个表达式之间,得到 1。这是因为 MariaDB BETWEEN...AND 运算符会先计算表达式的值,然后再进行比较,因此其结果与实例 1 相同。

判断一个列是否在两个常量之间

假设我们有一个名为 scores 的表,它包含了学生的姓名和成绩,如下所示:

name score
Alice 90
Bob 80
Cindy 85
David NULL
Eve 95

我们可以使用 MariaDB BETWEEN...AND 运算符判断 score 列是否在 8090 这两个常量之间,如下所示:

SELECT name, score, score BETWEEN 80 AND 90 AS result FROM scores;

输出结果如下:

+-------+-------+--------+
| name  | score | result |
+-------+-------+--------+
| Alice |    90 |      1 |
| Bob   |    80 |      1 |
| Cindy |    85 |      1 |
| David |  NULL |   NULL |
| Eve   |    95 |      0 |
+-------+-------+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 score 列是否在 8090 这两个常量之间,得到上表的结果。这是因为 MariaDB BETWEEN...AND 运算符会根据每一行的 score 值进行比较,如果在 8090 之间,返回 TRUE,如果不在,返回 FALSE,如果是 NULL,返回 NULL

判断一个列是否在两个列之间

我们可以使用 MariaDB BETWEEN...AND 运算符判断一个列是否在另外两个列之间。例如,假设我们有一个名为 products 的表,它包含了产品的名称、价格和折扣,如下所示:

name price discount
A 10 0.1
B 20 0.2
C 30 0.3
D 40 0.4
E 50 0.5

我们可以使用 MariaDB BETWEEN...AND 运算符判断 price 列是否在 price * (1 - discount)price * (1 + discount) 这两个列之间,如下所示:

SELECT name, price, discount, price BETWEEN price * (1 - discount) AND price * (1 + discount) AS result FROM products;

输出结果如下:

+------+-------+----------+--------+
| name | price | discount | result |
+------+-------+----------+--------+
| A    |    10 |      0.1 |      1 |
| B    |    20 |      0.2 |      1 |
| C    |    30 |      0.3 |      1 |
| D    |    40 |      0.4 |      1 |
| E    |    50 |      0.5 |      1 |
+------+-------+----------+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 price 列是否在 price * (1 - discount)price * (1 + discount) 这两个列之间,得到上表的结果。这是因为 MariaDB BETWEEN...AND 运算符会根据每一行的 pricediscount 值进行比较,如果在两个列之间,返回 TRUE,如果不在,返回 FALSE。在这个例子中,所有的 price 值都在两个列之间,因此返回 TRUE

判断一个日期是否在两个日期之间

我们可以使用 MariaDB BETWEEN...AND 运算符判断一个日期是否在另外两个日期之间。例如,假设我们有一个名为 orders 的表,它包含了订单的编号、客户的姓名、产品的名称和日期,如下所示:

order_id customer product date
1 Alice A 2021-01-01
2 Alice B 2021-01-02
3 Bob C 2021-01-03
4 Bob D 2021-01-04
5 Cindy E 2021-01-05
6 Cindy F 2021-01-06

我们可以使用 MariaDB BETWEEN...AND 运算符判断 date 列是否在 2021-01-022021-01-05 这两个日期之间,如下所示:

SELECT order_id, customer, product, date, date BETWEEN '2021-01-02' AND '2021-01-05' AS result FROM orders;

输出结果如下:

+----------+----------+---------+------------+--------+
| order_id | customer | product | date       | result |
+----------+----------+---------+------------+--------+
| 1        | Alice    | A       | 2021-01-01 |      0 |
| 2        | Alice    | B       | 2021-01-02 |      1 |
| 3        | Bob      | C       | 2021-01-03 |      1 |
| 4        | Bob      | D       | 2021-01-04 |      1 |
| 5        | Cindy    | E       | 2021-01-05 |      1 |
| 6        | Cindy    | F       | 2021-01-06 |      0 |
+----------+----------+---------+------------+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 date 列是否在 2021-01-022021-01-05 这两个日期之间,得到上表的结果。这是因为 MariaDB BETWEEN...AND 运算符会根据每一行的 date 值进行比较,如果在两个日期之间,返回 TRUE,如果不在,返回 FALSE

判断一个字符串是否在两个字符串之间

我们可以使用 MariaDB BETWEEN...AND 运算符判断一个字符串是否在另外两个字符串之间。例如,假设我们有一个名为 books 的表,它包含了书籍的名称、作者和类别,如下所示:

name author category
Pride and Prejudice Jane Austen Romance
The Catcher in the Rye J.D. Salinger Fiction
The Da Vinci Code Dan Brown Mystery
The Hunger Games Suzanne Collins Fantasy
The Kite Runner Khaled Hosseini Drama

我们可以使用 MariaDB BETWEEN...AND 运算符判断 name 列是否在 TheThe Z 这两个字符串之间,如下所示:

SELECT name, author, category, name BETWEEN 'The' AND 'The Z' AS result FROM books;

输出结果如下:

+-----------------------+-----------------+----------+--------+
| name                  | author          | category | result |
+-----------------------+-----------------+----------+--------+
| Pride and Prejudice   | Jane Austen     | Romance  |      0 |
| The Catcher in the Rye | J.D. Salinger   | Fiction  |      1 |
| The Da Vinci Code     | Dan Brown       | Mystery  |      1 |
| The Hunger Games      | Suzanne Collins | Fantasy  |      1 |
| The Kite Runner       | Khaled Hosseini | Drama    |      0 |
+-----------------------+-----------------+----------+--------+

这个实例中,我们使用 MariaDB BETWEEN...AND 运算符判断 name 列是否在 TheThe Z 这两个字符串之间,得到上表的结果。这是因为 MariaDB BETWEEN...AND 运算符会根据每一行的 name 值进行比较,如果在两个字符串之间,返回 TRUE,如果不在,返回 FALSE。在这个例子中,只有以 The 开头的书名在两个字符串之间,因此返回 TRUE

相关运算符

除了 MariaDB BETWEEN...AND 运算符之外,还有一些与之相关的运算符,它们也可以用于判断一个值是否在指定的范围内,或者进行范围的判断。下面是一些常用的运算符:

  • MariaDB NOT BETWEEN...AND 运算符:用于判断一个值是否不在指定的两个值之间,即是否小于第一个值,或者大于第二个值。例如,5 NOT BETWEEN 1 AND 10 返回 FALSE
  • MariaDB IN 运算符:用于判断一个值是否在指定的一组值中,即是否与其中任意一个值相等。例如,5 IN (1, 2, 3, 4, 5) 返回 TRUE
  • MariaDB NOT IN 运算符:用于判断一个值是否不在指定的一组值中,即是否与其中所有的值都不相等。例如,5 NOT IN (1, 2, 3, 4, 5) 返回 FALSE

结论

MariaDB BETWEEN...AND 运算符是一个简单而实用的运算符,它用于判断一个值是否在指定的两个值之间,即是否大于等于第一个值,且小于等于第二个值。该运算符可以用于过滤查询的结果,或者进行范围的判断。在处理一个值的范围时,我们可以灵活地使用 MariaDB BETWEEN...AND 运算符,以及与之相关的运算符,来得到我们想要的结果。