问题描述
CREATE TABLE `test` (
`id` BINARY(16) NOT NULL DEFAULT (UUID_TO_BIN(UUID())),`name` VARCHAR(64) NOT NULL,`phone` JSON NOT NULL,);
我想拥有的是在电话字段中搜索Json,
CREATE TABLE `test` (
`id` BINARY(16) NOT NULL DEFAULT (UUID_TO_BIN(UUID())),`phone_list` VARCHAR(30) GENERATED ALWAYS AS (JSON_UNQUOTE(Phone -> '$[*].Number')) STORED,FULLTEXT `Index_FullText` (name,PhoneList)
);
MysqL版本是8.0.21
解决方法
您能否像这样在您的电话号码上创建一个多值索引:
KEY `ix_phone` ((cast(json_extract(`Phone`,_utf8mb4'$[*].Number') as char(36)
然后在您的选择语句中使用:
WHERE 'some phone number' MEMBER OF(Phone->'$[*].number')