mysql - mysql的语法数组

标签 mysql arrays postgresql go

<分区>

将数据数组添加到数据库的语法是什么, 我发现 postgresql 是:pg.Array

 // "ins" is the SQL insert statement
ins := "INSERT INTO posts (title, tags) VALUES ($1, $2)"

// "tags" is the list of tags, as a string slice
tags := []string{"go", "goroutines", "queues"}

// the pq.Array function is the secret sauce
_, err = db.Exec(ins, "Job Queues in Go", pq.Array(tags))

最佳答案

这里有几点我会分开,这主要是由于您的问题不够清晰:

首先

pq.Array 用于将数组值转换为PostgreSQL中的安全列表,例如下面的语句:

db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401}))

结果查询在哪里:

SELECT * FROM t WHERE id = ANY(235, 401)

这旨在帮助您从列表中安全地制作与类型无关的查询值,这不是您在问题中使用它的方式。

第二

如果您只是想将值编码到数据库列中的逗号分隔列表中,即:

| title   | tags                 |
|---------|----------------------|
| my post | go,goroutines,queues |

您不需要 SQL 驱动程序中的特殊功能。您只需要创建值,然后让准备好的语句执行它的操作:

tags := []string{"go, goroutines, queues"}
q := "INSERT INTO posts (title, tags) VALUES ($1, $2)"
_, _ = db.Exec(q, "mypost", strings.Join(tags, ","))

第三

您可能会得到更好的服务,使用 MySQL 中的关系来完成您正在做的事情:

帖子
| id | title   |
|----|---------|
| 1  | my post |
标签
| id | tag        |
|----|------------|
| 1  | go         |
| 2  | goroutines |
| 3  | queues     |
帖子标签
| posts_id | tags_id |
|----------|---------|
| 1        | 1       |
| 1        | 2       |
| 1        | 3       |

这将通过不保存重复数据来帮助您节省空间,并且无需了解数据库中的序列化方法(另外,这就是关系数据库所做的)。然后,当您选择表时,您可以编写 JOIN 语句以根据需要检索数据。我强烈建议阅读 MySQL 中的多对多关系。

关于mysql - mysql的语法数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121996/

相关文章:

mysql - 调试套件显示重复的查询

php - 存储信息php/mysql

jquery - 如何发布一个空数组(整数)(jQuery -> MVC 3)

arrays - 并行取消嵌套多个数组

MySQL 更新 300 万行表中的每一行

mysql - 为什么当我通过 phpMyAdmin 导入 SQL 数据库时导入没有完成

java - 如何将二维字符串数组转换为一维字符串数组?

c - 通过使用 getchar 而不是 scanf 将 2 个大整数存储在数组中 - C 编程

django - 如何在 Django 应用程序中访问 PostgreSQL 数据库

sql - 选择相隔小于 1 秒的所有行