首先,我不确定我的标题是否以正确的方式解释了这个问题,但我认为我的代码会。
而不是这样做:
SELECT * FROM mytable WHERE JSON_EXTRACT(`cars`,'$."65"') = 'Toyota' OR JSON_EXTRACT(`cars `,'$."66"') = 'Toyota' OR JSON_EXTRACT(`cars `,'$."67"') = 'Toyota'
我想这样做:
SELECT * FROM mytable WHERE JSON_EXTRACT(`cars`,any of these 65,66,67) = 'Toyota'
可以这样做吗?
答案 0 :(得分:2)
根据documentation,您可以将任意数量的路径作为参数2传递给JSON_EXTRACT
函数。所以以下内容应该有效:
SELECT *
FROM yourTable
WHERE JSON_UNQUOTE(JSON_EXTRACT(`cars`, '$."65"', '$."66"', '$."67"')) LIKE '%"Toyota"%';
请注意,WHERE
子句实际上会以["some_value"]
的形式返回字符串值,因此我将对此进行比较。对MySQL的JSON API有更多经验的人可能比我上面写的更好。但是,这至少可以部分回答你的问题;是的,您可以通过一次调用JSON_EXTRACT
提取多个路径。