mysql - 用于检查 JSON 数组中是否存在至少一项的 SQL 正则表达式
问题描述
我在 MySQL 5.6 中有一个表,其文本类型字段“custom_info”以字符串形式存在 JSON。这种 JSON 的存在字段“clients”带有数组。
为了选择“客户”为空的记录,我使用查询:
select custom_info from users where custom_info like '%"clients":[]%'
如何检索“客户”数组至少存在一个元素的记录?
解决方案
MySQL 原生支持 JSON。我建议不要将其存储为字符串文字,而是将其存储为JSON 数据类型。这样做时,它将打开几个原生函数,如JSON_CONTAINS、JSON_EXTRACT、JSON_ARRAY和JSON_OBJECT。
然后您可以使用JSON_CONTAINS或JSON_EXTRACT来评估您的结果;就像是:
SELECT *
FROM custom_info
WHERE JSON_CONTAINS(clients, 'some_value_youd_expect_to_be_here')
或者:
SELECT *
FROM custom_info
WHERE JSON_EXTRACT('clients', '$[0]') is not null
推荐阅读
- kotlin - 使用挂起函数混淆内部类后的 ClassCastException
- firebase - 撤销实时数据库中的读取访问权限是否会立即断开活动侦听器的连接?
- apache-spark - z.run("paragraphId") 在 Zeppelin 中不起作用
- c# - 如何忽略 Serilog 中的空属性
- java - 为什么底部导航片段变成黑色并且在android中不起作用?
- shell - 从多个文本文件中提取公共行并显示原始行号
- excel - 文本框日期值以变体编号显示,vba编码excel
- linux - Linux crontab 似乎无法正常工作
- python - Colab - python 代码中的 input() 框太长,所以我需要向后滚动阅读问题
- c# - EF Core 2.2.6 映射Oracle打包函数