我需要进行查询以在子字符串搜索的条件下返回整行。此搜索必须匹配名为“movies”的列,并且它是其中的一个 JSON 对象,该对象内部是一个名为cast 的数组。该数组包含具有名称字段的演员对象。
搜索旨在将子字符串搜索与演员姓名相匹配。如果有匹配,则返回电影行。
数据结构:
`movie`: {
`cast`: [
{`name`: "Cleveland"},
{`name`: "Joe"},
{`name`: "Quagmire"}
]
}
我正在使用 whereRaw 查询,但我可能没有走上正确的轨道。我认为 SQLite 可能不支持 JSON 数组迭代,还有其他方法吗?
在 json_each(json_extract()) 之后再次使用 json_extract() 来提取每个 x 和 y 并聚合:
SELECT f.id,
MIN(json_extract(value, '$.x')) x,
MIN(json_extract(value, '$.y')) y
FROM features f, json_each(json_extract(f.data, '$.A.B.coordinates'))
GROUP BY f.id
查看演示。
您可以使用
json_each
提取行并在 LIKE
上执行 value->'$.name'
:
select
*
from
things
where
exists (
select
1
from
json_each(movie, '$.cast')
where
value->'$.name' like '%land%'
);
输入:
create table things (movie text);
insert into things (movie) values ('{
"cast": [
{"name": "Cleveland"},
{"name": "Joe"},
{"name": "Quagmire"}
]
}');
输出带有
%land%
:
{
"cast": [
{"name": "Cleveland"},
{"name": "Joe"},
{"name": "Quagmire"}
]
}
输出带有
'%random%'
:无行。