从1D JSON数组中搜索/提取值

时间:2018-03-27 01:00:57

标签: mysql arrays json

假设我将JSON字符串存储为json数据类型,如下所示:[1,2,4,8,16,32,64,128,512,1024]

我如何能够提取或搜索48的值?

显然,我无法使用LIKE关键字,因为如果我使用此4与查询SELECT ... FROM ... WHERE ... LIKE '%4%',我可以拉641024。与8能够提取128的值相同。

是否有类似于JSON_CONTAINS(...)的JSON函数用于JSON对象/键值对。

这一部分,我正在努力应对。

1 个答案:

答案 0 :(得分:1)

我刚刚搜索了MySQL JSON函数文档,我没有看到任何似乎做JSON数组包含操作的内容。但是有一种方法可以使用基本字符串函数继续进行。您可以搜索目标号码,两边用逗号分隔。为了完成这项工作,我们需要用逗号替换开始和结束括号。

SELECT
    CASE WHEN REPLACE(REPLACE(json, '[', ','), ']', ',') LIKE '%,4,%'
         THEN '4 present' ELSE '4 not present' END AS output
FROM yourTable;

下面的演示显示该查询也涵盖了边缘情况。

Demo