我需要能够访问所有可用的JSON数据,问题是很多数据都是嵌套的。
我现在有这个疑问。
SELECT * FROM `system_log` WHERE entry->"$[0]" LIKE "%search_term%";
我需要类似entry->"$*"
的东西来代替entry->"$[0]"
我认为箭头语法是JSON_EXTRACT的缩写,我认为这意味着提取的解决方案将适用于箭头语法。
{
" Name": {
"after": "Shop",
"before": "Supermarket"
}
}
这是我的JSON数据的一个例子,正如您所看到的,它有多个级别,这意味着entry->"$[0]"
不会捕获它。
SQL的版本8.0.19
到目前为止,我所尝试的是entry->"$[0]"
,然后在entry->"$[0]"
之后预挂[0],但是这种解决方案看起来不是很动态,因为JSON数据可能会变得越来越深。
1条答案
按热度按时间6g8kf2rb1#
JSON_SEARCH()不适用于您描述的搜索,因为JSON_SEARCH()只搜索完整的字符串匹配项,而不搜索通配符。
如果您真的无法预测JSON的结构,并且只想知道模式
'%search_term%'
是否出现在任何地方,那么就将整个JSON文档视为一个字符串,并使用LIKE
:如果您有更具体的搜索需求,那么您必须想出一种方法来预测您在JSON文档中搜索的值的路径,这是我无法帮助您的,因为我不知道您如何使用JSON。