如何创建检查数组是不是包含值的查询?戈朗戈姆

     2023-02-16     286

关键词:

【中文标题】如何创建检查数组是不是包含值的查询?戈朗戈姆【英文标题】:How to create query that checks if array contains value? golang gorm如何创建检查数组是否包含值的查询?戈朗戈姆 【发布时间】:2022-01-16 09:59:21 【问题描述】:

这是模型的外观:

type Board struct 
    Id     uint `gorm:"primaryKey;autoIncrement;unique" json:"id"`
    Owner  uint `json:"owner"`
    Name string `json:"name"`
    Contributors datatypes.JSON `gorm:"type:jsonb" json:"contributors"`
    GeneratedLink string `gorm:"default:''" json:"generated_link"`
    Todos datatypes.JSON `gorm:"type:jsonb" json:"todos"`

这是贡献者值在 postgresql 列中的显示方式:

以及如何进行查询以检查贡献者数组是否包含例如 20? 我试着这样做:database.DB.Where("contributors IN ?", 20).Find(&contBoards) 但出现错误:ERROR: syntax error at or near "$1" (SQLSTATE 42601)

请有任何想法,任何选项。 P.S 使用 gorm、postgresql

【问题讨论】:

IN 将切片作为参数。试试("contributors IN ?", []int20) @sberry 有一个空数组,但我应该从表中至少收到一列 【参考方案1】:

您在WHERE 子句中使用IN 运算符来检查值是否与值列表中的任何值匹配。

IN 需要一个明确的值列表(或子查询)。

我为您的案例创建了一个示例场景,如下所示:

contributors := []int20, 25, 27

var tmp []string

for _, v := range contributors 
    tmp = append(tmp, fmt.Sprint(v))


query := "SELECT * from table_name where contributors in (" + strings.Join(tmp, ",") + ")"

ANY 适用于数组。如果数组中已有值列表,这将很有用。

使用ANY 运算符,您只能搜索一个值。

select * from table_name where value = ANY(contributors);

如果要搜索多个值,可以使用@>运算符。

@> 是“包含”运算符。

定义如下几种数据类型:

数组:http://www.postgresql.org/docs/current/static/functions-array.html

范围类型:http://www.postgresql.org/docs/current/static/functions-range.html

几何类型:http://www.postgresql.org/docs/current/static/functions-geometry.html

JSON(和 JSONB):http://www.postgresql.org/docs/current/static/functions-json.html

为了更好地理解你可以参考这个链接:Postgres: check if array field contains value?

【讨论】:

如何检查数组是不是包含 JavaScript 中的值?

】如何检查数组是不是包含JavaScript中的值?【英文标题】:HowdoIcheckifanarrayincludesavalueinJavaScript?如何检查数组是否包含JavaScript中的值?【发布时间】:2010-09-1905:20:38【问题描述】:找出JavaScript数组是否包含值的最简洁有效的方... 查看详情

检查数组是不是包含Java中的值的最有效方法? [复制]

】检查数组是不是包含Java中的值的最有效方法?[复制]【英文标题】:MostefficientwaytocheckifanarraycontainsavalueinJava?[duplicate]检查数组是否包含Java中的值的最有效方法?[复制]【发布时间】:2016-10-1913:28:42【问题描述】:我对Java类中... 查看详情

如何检查arraylist中的数组是不是包含某个值?

】如何检查arraylist中的数组是不是包含某个值?【英文标题】:Howtocheckifanarrayinanarraylistcontainsacertainvalue?如何检查arraylist中的数组是否包含某个值?【发布时间】:2014-12-0301:15:04【问题描述】:我有一个数组列表,其中包含字符... 查看详情

如何检查数组是不是包含一件事或另一件事

】如何检查数组是不是包含一件事或另一件事【英文标题】:Howtocheckifanarraycontainsonethingoranother如何检查数组是否包含一件事或另一件事【发布时间】:2021-06-0501:48:27【问题描述】:我正在尝试在我的Discord机器人上创建权限系统... 查看详情

Postgresql:如何查询包含某些值的 JSONb 数组

】Postgresql:如何查询包含某些值的JSONb数组【英文标题】:Postgresql:HowtoqueryforJSONbarrayscontainingsomevalue(s)【发布时间】:2016-06-0916:55:32【问题描述】:我有这张桌子:CREATETABLElawyer(idSERIALPRIMARYKEY,datajsonb);INSERTINTOlawyer(data)VALUES(\'"a":1... 查看详情

如何检查 List<T> 元素是不是包含具有特定属性值的项目

】如何检查List<T>元素是不是包含具有特定属性值的项目【英文标题】:howtocheckifList<T>elementcontainsanitemwithaParticularPropertyValue如何检查List<T>元素是否包含具有特定属性值的项目【发布时间】:2011-06-2315:36:54【问题描... 查看详情

检查对象数组中是不是存在具有特定键值的对象

】检查对象数组中是不是存在具有特定键值的对象【英文标题】:checkifanobjectwithaspecifickeyvalueexistsinanarrayofobjects检查对象数组中是否存在具有特定键值的对象【发布时间】:2019-03-3101:18:55【问题描述】:我正在尝试检查项目数组... 查看详情

如何在 Flutter 中检查 JSON 数组是不是为空

】如何在Flutter中检查JSON数组是不是为空【英文标题】:HowtocheckifJSONarrayisemptyinFlutter如何在Flutter中检查JSON数组是否为空【发布时间】:2021-04-1005:02:30【问题描述】:尝试创建一个if语句来检查API是否返回包含数据的“项目”这... 查看详情

iPhone NSPredicate 如何创建一个检查属性是不是有值的谓词?

】iPhoneNSPredicate如何创建一个检查属性是不是有值的谓词?【英文标题】:iPhoneNSPredicatehowtocreateapredicatethatchecksifpropertyhasavalue?iPhoneNSPredicate如何创建一个检查属性是否有值的谓词?【发布时间】:2012-11-0707:21:08【问题描述】:这... 查看详情

Waterline ORM - 检查数组属性是不是包含值

】WaterlineORM-检查数组属性是不是包含值【英文标题】:WaterlineORM-checkifanarrayattributecontainsvaluesWaterlineORM-检查数组属性是否包含值【发布时间】:2014-11-1515:57:16【问题描述】:我有一个具有这些属性的模型:attributes:title:type:\'strin... 查看详情

检查对象数组是不是包含对象

】检查对象数组是不是包含对象【英文标题】:Checkifarrayofobjectsincludesanobject检查对象数组是否包含对象【发布时间】:2020-06-0707:50:33【问题描述】:我正在尝试检查对象数组是否包含对象。当数组中有一个具有相同值的对象并... 查看详情

mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]

】mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]【英文标题】:mongodb:querytocheckifiteminanarraycontainsaparticularstring[duplicate]mongodb:查询以检查数组中的项目是否包含特定字符串[重复]【发布时间】:2018-11-0320:17:36【问... 查看详情

如何检查数组是不是包含至少一个对象?

】如何检查数组是不是包含至少一个对象?【英文标题】:Howtocheckifarraycontainsatleastoneobject?如何检查数组是否包含至少一个对象?【发布时间】:2018-03-2115:58:00【问题描述】:我想检查数组是否包含对象。我不想比较值只是想检... 查看详情

检查查询是不是包含 oracle 中子查询的所有值

】检查查询是不是包含oracle中子查询的所有值【英文标题】:Checkthataquerycontainsallthevaluesofasubqueryinoracle检查查询是否包含oracle中子查询的所有值【发布时间】:2020-03-0419:05:28【问题描述】:假设您有一个查询,并且您只想显示具... 查看详情

如何检查一个数组是不是包含另一个数组的任何元素

】如何检查一个数组是不是包含另一个数组的任何元素【英文标题】:Howtocheckifanarraycontainsanyelementsofanotherarray如何检查一个数组是否包含另一个数组的任何元素【发布时间】:2022-01-0920:42:29【问题描述】:这里有一个数组["chair"... 查看详情

如何检查数组是不是包含元素[重复]

】如何检查数组是不是包含元素[重复]【英文标题】:Howtocheckwhetheranarraycontainsanelement[duplicate]如何检查数组是否包含元素[重复]【发布时间】:2013-02-2008:08:15【问题描述】:我想限制可以按下的键。$(\'.txtComments\').keydown(function(eve... 查看详情

在 Presto 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素

】在Presto中,如何检查我通过子查询获取的列表中是不是存在数组中的元素【英文标题】:InPrestohowcanIcheckifanelementinanarrayispresentinalistIacquireviaasubquery在Presto中,如何检查我通过子查询获取的列表中是否存在数组中的元素【发布... 查看详情

如何检查多值字段是不是包含值 MS Access

】如何检查多值字段是不是包含值MSAccess【英文标题】:HowtocheckifmultivaluedfieldcontainsvaluesMSAccess如何检查多值字段是否包含值MSAccess【发布时间】:2015-05-1815:12:05【问题描述】:我在MicrosoftAccess2007中遇到了多值字段问题。我想在... 查看详情