是否可以使用多个键执行 JSON_EXTRACT 操作?

Pet*_*son 1 php mysql json

首先,我不确定我的标题是否以正确的方式解释了这个问题,但我认为我的代码会。

而不是这样做:

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)

这可以做到吗?

Tim*_*sen 6

根据文档,您可以将任意数量的路径作为参数 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