前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >GORM 判断 JSON 数组是否包含某元素

GORM 判断 JSON 数组是否包含某元素

作者头像
恋喵大鲤鱼
发布2023-02-23 09:25:58
发布2023-02-23 09:25:58
3.5K00
代码可运行
举报
文章被收录于专栏:C/C++基础C/C++基础
运行总次数:0
代码可运行

文章目录

1.问题描述

在 MySQL 中,并没有内置的数组数据类型。但是,MySQL 提供了一些可以实现类似数组功能的机制,如使用字符串来存储由逗号分隔的值,使用 JSON 类型来存储数组数据等。

假设您正在使用 GORM v2 和 MySQL 数据库,并且您的数据表中有一个名为 data 的 JSON 类型的列,其中存储了一个字符串数组,您想要查询该数组是否包含某个元素。

代码语言:javascript
代码运行次数:0
运行
复制
import (
	"gorm.io/datatypes"
)

type MyModel struct {
    ID   uint
    Data datatypes.JSON `gorm:"column:data"`
}

2.使用 JSON_CONTAINS()

MySQL JSON_CONTAINS() 函数可以用于判断 JSON 数组中是否包含某个元素。

我们可以使用原生 SQL 作为 GORM 的内联条件来判断数组中是否包含某值。

代码语言:javascript
代码运行次数:0
运行
复制
var rows []MyModel
DB.Where(fmt.Sprintf(`JSON_CONTAINS(data,'"%v"')`, YOUR_STR_VALUE)).Find(&rows)

JSON_CONTAINS 函数还可以判断 JSON 对象中某个字段的值是否为指定的值,具体用法可参见 MySQL 官网的介绍。

3.使用 gorm.io/datatypes

gorm.io/datatypes 是 GORM v2 版本中引入的一个包,提供了一些数据库特定的数据类型,例如 JSON、HSTORE、ARRAY、UUID 等。

datatypes 支持对 JSON 数组的包含查询。

代码语言:javascript
代码运行次数:0
运行
复制
var rows []MyModel
DB.Where(datatypes.JSONArrayQuery("data").Contains("YOUR_STR_VALUE")).Find(&rows )

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1.问题描述
  • 2.使用 JSON_CONTAINS()
  • 3.使用 gorm.io/datatypes
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档