是否可以使用多个密钥执行JSON_EXTRACT?

时间:2018-05-28 11:14:45

标签: php mysql json

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

而不是这样做:

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'

可以这样做吗?

1 个答案:

答案 0 :(得分:2)

根据documentation,您可以将任意数量的路径作为参数2传递给JSON_EXTRACT函数。所以以下内容应该有效:

SELECT *
FROM yourTable
WHERE JSON_UNQUOTE(JSON_EXTRACT(`cars`, '$."65"', '$."66"', '$."67"')) LIKE '%"Toyota"%';

Demo

请注意,WHERE子句实际上会以["some_value"]的形式返回字符串值,因此我将对此进行比较。对MySQL的JSON API有更多经验的人可能比我上面写的更好。但是,这至少可以部分回答你的问题;是的,您可以通过一次调用JSON_EXTRACT提取多个路径。