我想做一个tags
类型列json
:
e.g.,
id | tags
=========================================
1 | '["tag1", "tag2", "tag3"]'
2 | '["tag1", "tag3", "tag5", "tag7"]'
3 | '["tag2", "tag5"]'
我想为每个索引tag
在数组中,不知道数组的长度(可变长度)。
那么如果我查询包含的行tag2
,它应该返回第 1、3 行。
https://dev.mysql.com/doc/refman/5.7/en/json.html https://dev.mysql.com/doc/refman/5.7/en/json.html
JSON 列无法建立索引。您可以解决此限制
通过在生成的列上创建索引来提取标量
JSON 列中的值
通过“提取标量值”,这是否意味着我必须单独提取数组中的每个项目并为其建立索引(意味着我必须知道数组的最大长度才能对它们进行索引)?如何索引可变长度数组?
现在可以使用 MySQL 8.0.17+
像这样的东西(未测试)
CREATE TABLE posts (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
tags JSON,
INDEX tags( (CAST(tags AS VARCHAR(32) ARRAY)) )
);
这样使用它:
SELECT * FROM posts
WHERE JSON_CONTAINS(tags, CAST('[tag1, tag2]' AS JSON));
更多详细信息和示例请参见此处:https://dev.mysql.com/doc/refman/8.0/en/json.html https://dev.mysql.com/doc/refman/8.0/en/json.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)