【问题标题】:Search/Extract value from 1D JSON Array从一维 JSON 数组中搜索/提取值
【发布时间】:2018-09-05 06:31:05
【问题描述】:

假设我有一个 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 对象/键值对。

这部分,我很难应付。

【问题讨论】:

    标签: mysql arrays json


    【解决方案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

    【讨论】:

    • 虽然这样的事情确实没有 JSON 函数 - 正如你也检查过的那样,你已经设法解决了这个限制。谢谢@蒂姆
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多