亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建檢查數組是否包含值的查詢?

如何創建檢查數組是否包含值的查詢?

Go
墨色風雨 2022-10-17 19:27:55
這是模型的外觀: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)請任何想法,任何選擇。PS 使用 gorm、postgresql
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您IN在WHERE子句中使用運算符來檢查值是否與值列表中的任何值匹配。


IN需要一個明確的值列表(或子查詢)。


我為您的案例創建了一個示例場景,如下所示:


contributors := []int{20, 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


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號