假设我将JSON字符串存储为json
数据类型,如下所示:[1,2,4,8,16,32,64,128,512,1024]
我如何能够提取或搜索4
或8
的值?
显然,我无法使用LIKE
关键字,因为如果我使用此4
与查询SELECT ... FROM ... WHERE ... LIKE '%4%'
,我可以拉64
和1024
。与8
能够提取128
的值相同。
是否有类似于JSON_CONTAINS(...)
的JSON函数用于JSON对象/键值对。
这一部分,我正在努力应对。
答案 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;
下面的演示显示该查询也涵盖了边缘情况。