Golang 查询字符串作为查询的一部分

标签 go

我想使用字符串作为查询的一部分。

func GetAll(id int) {
  var queryPart string
  if id != 0 {
    queryPart = fmt.Sprintf("WHERE id = %d", id)
  } else {
    queryPart = ""
  }


  database.DB.Query("SELECT name FROM table ?, queryPart)
}

在 database.DB 中我有 *db.Sql 实例。

如何让它发挥作用?使用该代码,我仍然得到“您的 SQL 语法有错误”。

最佳答案

您可以逐步构建查询,仅在需要时添加参数。

// Build a query (columns and table being strings)
q := fmt.Sprintf("SELECT %s FROM %s", columns, table)
args := []interface{}{}

// Add conditional query/args
if id != 0 {
 q = fmt.Sprintf("%s WHERE id=?",q)
 args = append(args,id)    
}

// Perform the query
database.DB.Query(q,args...)

如果您发现自己做了很多这样的事情,请考虑编写一个小型查询生成器,它可以让您轻松地构建 sql 查询,而不用大惊小怪。它可以相对简单,带有用于选择、连接等的插槽和用于 args 的数组。

关于Golang 查询字符串作为查询的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033689/

相关文章:

docker - 在不调用 go build 的情况下为 golang 应用程序构建 docker 容器

unit-testing - 如何编写需要大量测试用例的 go 测试

regex - 不创建组如何表达 "match a word or another"?

linux - ngrok 如何在防火墙后工作?

go - JWT 认证策略

gcc - 如何修复以下 Google Cloud Platform 部署错误? [错误 2]

node.js - 什么是 Node 的 NODE_ENV 的 Golang 等价物

arrays - 将数组从索引 1 发送到函数

go - 如何测试在 goroutine 中调用了一个函数?

使用 Golang 的 Azure 监视器导出器