gorm判断json数组是否包含某元素(代码片段)

恋喵大鲤鱼 恋喵大鲤鱼     2023-03-04     779

关键词:

文章目录

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博客

集合框架(代码片段)

...中包含的元素个数,就是集合的长度。-->isEmpty();<!--判断集合中是否含有元素。-->contains();<!--判断集合中是否包含某一指定元素,返回一个boolean值。-->add();<!--向集合中添加某一元素。-->remove();<!--从集合中删除... 查看详情

jquery里判断数组内是否包含了指定的值或元素的方法(代码片段)

  本文讲的是在jquery里,如何判断一个数组里是否包含了指定的值,变量,或其它对象元素的方法。在jquery里,我们可以用$.inArray来判断一个数组里是否包含了指定的值或其它对象元素,来看一个简单的实例:vararr=["aijquery","j... 查看详情

在java中如何高效的判断数组中是否包含某个元素(代码片段)

importorg.apache.commons.lang3.ArrayUtils;publicstaticbooleanuseArrayUtils(String[]arr,StringtargetValue)returnArrayUtils.contains(arr,targetValue);  查看详情

js判断字符串与字符串相互包含,以及数组是否包含某个元素;

...字符串?   实现:      varstr ="adc";  判断str中是否包含"c"      if(str.indexOf("c")>0){        alert(“str中包含字符串c ”)      }需求:判端一个数组是否包含某一个元素?  ... 查看详情

js判断某变量是否为某数组中的一个值的3种方法(代码片段)

1.正则表达式js中判断某个元素是否存在于某个js数组中,相当于PHP语言中的in_array函数。1Array.prototype.in_array=function(e)2varr=newRegExp(‘,‘+e+‘,‘);3return(r.test(‘,‘+this.join(this.S)+‘,‘));4; 用法如下:1vararr=newArray([‘b‘,2,‘a‘, 查看详情

markdown判断数组中是否存在某一数值(代码片段)

查看详情

javascript判断数组是否包含指定元素的方法

本文实例讲述了JavaScript判断数组是否包含指定元素的方法。分享给大家供大家参考。具体如下:这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法/***Array.prototype.[methodname]allowsyoutodefine/overwriteanobjectsmeth... 查看详情

判断页面的点击事件是否发生在某元素上(代码片段)

...tps://www.cnblogs.com/veinyin/p/10999265.html  有时我们需要判断页面的点击事件是否发生在某元素上使用场景如 自己实现下拉框 点击页面其它地方时下拉部分隐藏下面代码为vue场景下//template中div(ref="myDiv")//created中添加clic... 查看详情

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

可以直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,但是该方法在某些版本的IE中是不起作用,所以建议使用jquery的inArray方法,该方法返回元素在数组中的... 查看详情

判断list是否包含某元素job

staticbooleanlistIn(Listlist,          anyTypeelement)  boolean  ret=false;  ListEnumeratorlistE=list.getEnumerator();  ;  if(list.typeId()!=typeof(element))    ret=false;  else      while(listE.moveNext())      ... 查看详情

ios中判断某项元素是否在数组中

判断数组中书否含有某个元素NSString*str=@"数组";NSArray*array=@[@"who",@"数组",@"array",@"3"];BOOLisbool=[arraycontainsObject:str];NSLog(@ 查看详情

如何高效地判断数组中是否包含某特定值

如何检查一个未排序的数组中是否包含某个特定的值,这是在Java中非常实用并且频繁使用的操作。另外,检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大。下面,我将为大家展示各种方法及其... 查看详情

js判断某个元素是否属于一个数组(代码片段)

functionIsInArray(arr,val)  vartestStr=‘,‘+arr.join(",")+",";  returntestStr.indexOf(","+val+",")!=-1; 查看详情

如何高效地判断数组中是否包含某特定值

        如何检查一个未排序的数组中是否包含某个特定值,这是一个在Java中非常实用并且频繁使用的操作。检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大。下面... 查看详情

es6新了解(代码片段)

对es6算不上很了解,记录一下新发现的es6妙招。1.判断字符串或数组中是否存在某个元素: Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似//判断字符串中是否存在某字符... 查看详情

前端面试javascript—js判断数组中是否包含某个值(代码片段)

方法一:array.indexOf()此方法判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1vararr=[1,2,3,4];varindex=arr.indexOf(3);console.log(index);//2方法二:array.includes()此方法判断数组中是否存在某... 查看详情

前端面试javascript—js判断数组中是否包含某个值(代码片段)

方法一:array.indexOf()此方法判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1vararr=[1,2,3,4];varindex=arr.indexOf(3);console.log(index);//2方法二:array.includes()此方法判断数组中是否存在某... 查看详情

mysql学习笔记json类型(代码片段)

...SON值JSON_OBJECTJSON_ARRAYJSON_QUOTE转义字符查询JSON值JSON_CONTAINS判断包含值JSON_CONTAINS_PATH判断包含路径JSON_EXTRACT(简写->)提取值JSON_KEYS返回所有键JSON_VALUE返回值JSON_OVERLAPS对比JSONJSON_SEARCH返回匹配路径MEMBEROF数组中匹配元素... 查看详情