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 数组是否包含某元素的主要内容,如果未能解决你的问题,请参考以下文章

JS中如何判断数组中是不是包含某一元素

js中判断数组中是否包含某元素的方法

js中判断数组中是否包含某元素的方法

js中判断数组中是否包含某元素的方法

js判断数组是否包含某元素

js 判断数组中是不是包含