MariaDB IN 操作符的基础用法与实例

MariaDB IN 操作符用于判断一个值是否在一个集合中。

发布于

MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支。MariaDB 提供了许多内置的操作符,用于对数据进行各种操作和转换。本文将介绍一个常用的操作符:IN 操作符,它可以判断一个值是否在一个集合中。

语法

IN 操作符的语法如下:

value IN (value1, value2, ..., valueN)

其中,value 是要判断的值,可以是任何类型的值,比如数字,字符串,日期,时间,二进制等。value1, value2, ..., valueN 是一个集合,可以是一个常量列表,一个子查询,或者一个表名。如果 value 是 NULL,或者集合中没有任何元素,或者集合中的所有元素都是 NULL,则返回 NULL。如果 value 等于集合中的任何一个元素,则返回 TRUE。如果 value 不等于集合中的任何一个元素,则返回 FALSE。

实例

下面是一些使用 IN 操作符的实例,以及相应的代码和输出结果。

使用常量列表作为集合

SELECT 'A' IN ('A', 'B', 'C');
SELECT 10 IN (1, 2, 3, 4, 5);
SELECT '2024-02-23' IN ('2024-02-22', '2024-02-23', '2024-02-24');
1
0
1

在这个实例中,我们使用 IN 操作符判断一个值是否在一个常量列表中。注意,字符串的比较是区分大小写的。

使用子查询作为集合

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(20),
  score INT
);

INSERT INTO students VALUES
(1, 'Alice', 90),
(2, 'Bob', 80),
(3, 'Charlie', 70),
(4, 'David', 60),
(5, 'Eve', 50);

分别执行一下语句:

SELECT * FROM students WHERE score IN (SELECT MAX(score) FROM students);
SELECT * FROM students WHERE name IN (SELECT name FROM students WHERE score > 60);
SELECT * FROM students WHERE id IN (SELECT id FROM students WHERE score < 60);

运行结果如下:

+----+-------+-------+
| id | name  | score |
+----+-------+-------+
|  1 | Alice |    90 |
+----+-------+-------+

+----+---------+-------+
| id | name    | score |
+----+---------+-------+
|  1 | Alice   |    90 |
|  2 | Bob     |    80 |
|  3 | Charlie |    70 |
+----+---------+-------+

+----+------+-------+
| id | name | score |
+----+------+-------+
|  5 | Eve  |    50 |
+----+------+-------+

在这个实例中,我们使用 IN 操作符判断一个值是否在一个子查询的结果中。注意,子查询必须返回一列,否则会报错。

相关函数

除了 IN 操作符外,MariaDB 还提供了一些与集合相关的函数,如下:

  • FIND_IN_SET() 函数:判断一个字符串是否在一个逗号分隔的字符串列表中,返回其位置,如果不在,返回 0。
  • NOT IN 操作符:判断一个值是否不在一个集合中,返回布尔值。

结论

本文介绍了 MariaDB 的 IN 操作符的基础用法与实例,它可以判断一个值是否在一个集合中。IN 操作符是一个常用的操作符,它可以用于对数据进行筛选,查询,比较等场景。