是否可以用多个键来提取json?

o3imoua4  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(227)

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

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'

这能做到吗?

oymdgrw7

oymdgrw71#

根据文档,您可以将任意数量的路径作为参数2向前传递给 JSON_EXTRACT 功能。因此,以下方法应该有效:

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

演示

请注意 WHERE 子句将实际返回以下形式的字符串值 ["some_value"] 因此,我与此进行比较。对mysql的jsonapi有更多经验的人可能会比我上面写的做得更好。但是,这至少部分地回答了你的问题;是的,您可以在对的单个调用中提取多个路径 JSON_EXTRACT .

相关问题