我想在mysql表中选择一行,并根据该行的json字段中包含的数组的开头进行过滤。
CREATE TABLE test (id int, c1 json);
INSERT INTO test VALUES
(1, '{ "path": ["a", "b", "c"] }'),
(2, '{ "path": ["a", "b"] }'),
(3, '{ "path": ["a", "b", "d"] }'),
(4, '{ "path": ["a"] }'),
(5, '{ "path": ["e", "a", "b"] }')
(6, '{ "path": ["a", "e", "b"] }');
因此,通过上述设置,我想搜索以["a", "b"]
开头的路径,并获得1、2和3。
4、5和6不会以路径["a", "b"]
开头,因此不会返回。
select c1 from test where json_contains(c1, '["a", "b"]', '$.path');
与我发现的距离很近,但是失败了,因为json_contains
没有尝试连续地或从数组的开头匹配项。
答案 0 :(得分:0)
从测试中选择ID,其中json_extract(c1,“ $。path [0]”)='a'和json_extract(c1,“ $。path [1]”)='b';