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

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

发布于

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

语法

IN 操作符的语法如下:

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

其中,value 是要判断的值,可以是任何类型的值,比如数字,字符串,日期,时间,二进制等。value1, value2, ..., valueN 是一个集合,可以是一个常量列表,一个子查询,或者一个表名。如果 valueNULL,或者集合中没有任何元素,或者集合中的所有元素都是 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 操作符是一个常用的操作符,它可以用于对数据进行筛选,查询,比较等场景。