GORM 判断 JSON 数组是否包含某元素
Posted 恋喵大鲤鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GORM 判断 JSON 数组是否包含某元素相关的知识,希望对你有一定的参考价值。
文章目录
1.问题描述
在 mysql 中,并没有内置的数组数据类型。但是,MySQL 提供了一些可以实现类似数组功能的机制,如使用字符串来存储由逗号分隔的值,使用 JSON 类型来存储数组数据等。
假设您正在使用 GORM v2 和 MySQL 数据库,并且您的数据表中有一个名为 data 的 JSON 类型的列,其中存储了一个字符串数组,您想要查询该数组是否包含某个元素。
import (
"gorm.io/datatypes"
)
type MyModel struct
ID uint
Data datatypes.JSON `gorm:"column:data"`
2.使用 JSON_CONTAINS()
MySQL JSON_CONTAINS() 函数可以用于判断 JSON 数组中是否包含某个元素。
我们可以使用原生 SQL 作为 GORM 的内联条件来判断数组中是否包含某值。
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 数组的包含查询。
var rows []MyModel
DB.Where(datatypes.JSONArrayQuery("data").Contains("YOUR_STR_VALUE")).Find(&rows )
参考文献
OpenAI ChatGPT
12.18.3 Functions That Search JSON Values
mysql,查询json数组字段中包含某个元素的sql语句 - CSDN博客
以上是关于GORM 判断 JSON 数组是否包含某元素的主要内容,如果未能解决你的问题,请参考以下文章