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