首页 > 解决方案 > 来自json数组的MySQL条件过滤器元素

问题描述

在 MySQL 中有一个 json 数组类型列,并尝试有条件地过滤掉数组中的一些元素。这是示例:

原始json数组

[ {"name": "Atencion a Clientes", "number": "*111"}, {"name": "Atn Ciudadana", "number": "066"}, {"name": "Atn Ctes Intl ", "number": "+525525813300"}, {"name": "Bomberos", "number": "116"}, {"name": "Chelo", "number": "993-120-2100" }]

所需的输出是这样的:

所需的输出 json 数组

[ {"name": "Atn Ctes Intl", "number": "+525525813300"}, {"name": "Chelo", "number": "993-120-2100"} ]

我们只想保留电话号码长度> = 10的元素。尝试使用以下代码,但不起作用。是否可以通过 MySQL 函数来实现这一点?非常感谢。

WHERE 长度(替换(json_extract(phone_contacts,'$[*].number'),'',''))> = 10

标签: mysqlsqlarraysjsonconditional

解决方案


尝试选择您where作为自己的列并检查输出。如果有效,您可以参考。

所以

Select         length(replace(json_extract(phone_c ntacts,'$[*].number' ) , ' ', '') ) as my_length

然后在having查询末尾引用

Having my_length>=10

推荐阅读