从mysql JSON字段中选择,其中数组以子数组开头

时间:2018-08-23 13:44:15

标签: mysql json

我想在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没有尝试连续地或从数组的开头匹配项。

1 个答案:

答案 0 :(得分:0)

从测试中选择ID,其中json_extract(c1,“ $。path [0]”)='a'和json_extract(c1,“ $。path [1]”)='b';