MySQL 如何在一个字段中包含多个值(mysql 一个字段包含)

MySQL: 如何在一个字段中包含多个值?

在 MySQL 中,有时需要在一个字段中存储多个值。比如说,我们要保存一篇文章的标签。一篇文章可能有多个标签,如 “技术”,”编程”,”Web开发” 等等。我们需要将这些标签以某种方式保存在数据库中,并可以方便地查询。

通常情况下,使用逗号分隔符或 JSON 格式来存储多个值是最常见的方法。下面分别简要介绍如何在 MySQL 中使用这两种方式。

使用逗号分隔符存储多个值

假设我们有一个名为 “articles” 的表,它包含了一篇文章的标识、标题和标签。我们可以使用逗号分隔符将多个标签合并成一个字符串来存储,然后再在查询时使用 LIKE 来进行匹配。

表结构如下:

CREATE TABLE articles (

id int(11) NOT NULL AUTO_INCREMENT,

title varchar(255) NOT NULL,

tags varchar(255) NOT NULL,

PRIMARY KEY (id)

);

对于这个表,我们可以像下面这样插入数据:

INSERT INTO articles (title, tags) VALUES (‘文章1’, ‘技术,编程’);

INSERT INTO articles (title, tags) VALUES (‘文章2’, ‘技术,Web开发’);

INSERT INTO articles (title, tags) VALUES (‘文章3’, ‘编程,Web开发’);

现在我们需要查询所有包含 “编程” 标签的文章:

SELECT * FROM articles WHERE tags LIKE ‘%编程%’;

这个查询将返回文章1和文章3。

使用 JSON 格式存储多个值

在 MySQL 5.7 及以上版本中,我们可以使用 JSON 类型来存储和查询复杂的数据。假设我们有一个名为 “articles” 的表,它包含了一篇文章的标识、标题和标签。我们可以将标签以 JSON 数组的形式存储在一个字段中。

表结构如下:

CREATE TABLE articles (

id int(11) NOT NULL AUTO_INCREMENT,

title varchar(255) NOT NULL,

tags JSON NOT NULL,

PRIMARY KEY (id)

);

对于这个表,我们可以像下面这样插入数据:

INSERT INTO articles (title, tags) VALUES (‘文章1’, ‘[“技术”, “编程”]’);

INSERT INTO articles (title, tags) VALUES (‘文章2’, ‘[“技术”, “Web开发”]’);

INSERT INTO articles (title, tags) VALUES (‘文章3’, ‘[“编程”, “Web开发”]’);

现在我们需要查询所有包含 “编程” 标签的文章:

SELECT * FROM articles WHERE JSON_CONTNS(tags, ‘”编程”‘);

这个查询将返回文章1和文章3。

总结

无论使用逗号分隔符还是 JSON 格式来存储多个值,都有其优缺点。逗号分隔符的缺点是难于查询和修改,而且无法提供类型安全性。JSON 格式的优点是可以轻松地过滤和查询,而且可以提供类型安全性和更好的扩展性。需要根据实际情况进行选择。如果使用的是 MySQL 5.7 及以上版本,建议使用 JSON 格式。


数据运维技术 » MySQL 如何在一个字段中包含多个值(mysql 一个字段包含)