(MySQL-Version 5.7.20)
按预期工作:
SELECT JSON_SEARCH(
'{"mm": [{"id":"1","field":"test","value":33}]}',
'one', '1', null, '$.mm[*].id') as path;
-- output: path== "$.mm[0].id"
不工作:
drop table test;
create table test(
id int primary key,
data json
);
insert into test (id, data) values (1, '{}');
update test set data=JSON_SET(data, '$.mm', json_array()) where id=1;
update test set data=JSON_ARRAY_APPEND(data, '$.mm', '{"id":"1","field":"test","value":33}') where id=1;
SELECT JSON_SEARCH(data, 'one', '1', null, '$.mm[*].id') as path from test where id=1;
-- output: path==NULL
-- expected: path== "$.mm[0].id"
很确定我在这里做了一些错误,但我无法弄清楚哪一个......
谢谢
答案 0 :(得分:0)
得到了...... 必须将字符串强制转换为json才能在表中包含对象类型。这适用于追加和设置。使用JSON_SEARCH时,如果第一个参数是字符串,则会自动转换为json。