MySQL – 如何选择包含数组值的行?

MySQL – 如何选择包含数组值的行?

使用 MySQL ,您可以从表中选择包含特定值的行。但是,如果您需要选择包含数组中任意值的行怎么办?我将在本文中为您展示如何使用 IN 和 FIND_IN_SET 函数实现这一目标。

阅读更多:MySQL 教程

1. 使用 IN 函数

IN 函数接受一个集合作为参数(可以是值列表或子查询),并返回一个布尔值。如果值在集合中出现,则返回 true,否则返回 false。

例如,假设我们有一个包含以下内容的表:

id name age
1 Alice 20
2 Bob 25
3 Carol 30

要选择包含值 20 或 25 的行,可以使用以下查询:

SELECT * FROM table_name WHERE age IN (20, 25);
Mysql

上述查询将返回 ID 为 1 和 2 的行。

现在,如果我们想选择包含任意数组值的行,可以将数组转换为值列表,并在 IN 函数中使用它。例如,如果我们有以下数组:

['Alice', 'Bob']
Mysql

我们可以使用以下查询来选择包含数组值之一的行:

SELECT * FROM table_name WHERE name IN ('Alice', 'Bob');
Mysql

上述查询将返回 ID 为 1 和 2 的行。

2. 使用 FIND_IN_SET 函数

FIND_IN_SET 函数接受两个参数:一个值和一个包含值的逗号分隔字符串。它返回值在字符串中的位置,如果值不存在,则返回 0。

例如,假设我们有一个包含以下内容的表:

id name tags
1 Apple fruit
2 Banana fruit, sweet
3 Carrot vegetable
4 Dark chocolate sweet, dessert

如果我们要选择包含 “fruit” 标签的行,则可以使用以下查询:

SELECT * FROM table_name WHERE FIND_IN_SET('fruit', tags) > 0;
Mysql

上述查询将返回 ID 为 1 和 2 的行。

现在,如果我们想选择包含任意数组值的行,我们可以将数组转换为逗号分隔字符串,并在 FIND_IN_SET 函数中使用它。例如,如果我们有以下数组:

['fruit', 'sweet']
Mysql

我们可以使用以下查询来选择包含数组值之一的行:

SELECT * FROM table_name WHERE FIND_IN_SET('fruit', tags) > 0 OR FIND_IN_SET('sweet', tags) > 0;
Mysql

上述查询将返回 ID 为 2 和 4 的行。

总结

使用 IN 函数和 FIND_IN_SET 函数,您可以选择包含数组中任意值的行。在使用函数时,一定要清楚数组的格式,以便正确地将其转换为函数所需的值列表或逗号分隔字符串。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册