MySQL 8.0中如何为JSON字符串数组创建索引?
MySQL JSON字符串数组的多值索引创建方法
针对你提到的tableDemo表中JSONDEMO字段里的zipcode字符串数组,创建多值索引的语句如下:
CREATE INDEX idx_zipcode ON tableDemo ((CAST(JSONDEMO->>'$.zipcode' AS VARCHAR(255) ARRAY)));
关键说明:
JSONDEMO->>'$.zipcode':从JSON字段中提取zipcode数组,->>运算符返回无引号的JSON数组内容。CAST(...) AS VARCHAR(255) ARRAY:将提取到的JSON数组转换为SQL字符串数组类型,VARCHAR(255)可根据实际存储的字符串长度调整(比如VARCHAR(100))。- 多值索引仅支持MySQL 8.0.14及以上版本,使用前请确认版本兼容性。
索引使用示例:
创建索引后,可通过以下方式查询包含特定字符串的记录:
- 使用
MEMBER OF运算符:
SELECT * FROM tableDemo WHERE 'i am String' MEMBER OF(JSONDEMO->>'$.zipcode');
- 使用
JSON_CONTAINS函数(注意第二个参数需带双引号,匹配JSON格式的字符串):
SELECT * FROM tableDemo WHERE JSON_CONTAINS(JSONDEMO->'$.zipcode', '"string"');
内容的提问来源于stack exchange,提问作者ziliang zeng
相关产品推荐
相关产品推荐

