golang中的长查询

sib*_*ert 4 go

这是一个基于绝对不知道golang的问题,目的是找出是否有办法使长查询可读.

我的尝试是将sql文本放在变量中,然后执行变量.

伪代码(没有实际代码):

var query = 
SELECT * FROM foo
UNION ALL
SELECT * FROM bar
UNION ALL
SELECT * FROM other
...

db.prepare (var query)
db.query (var query)
Run Code Online (Sandbox Code Playgroud)

这可能是一个愚蠢的问题,但我已经搜索过,并且没有发现如何使长查询更具"可读性".大多数示例都基于"hello world"级别.在现实世界中,查询可能会很长.

TIA,

Aru*_*ath 13

您可以将查询声明为多行字符串文字.

query := `
  SELECT * FROM foo
  UNION ALL
  SELECT * FROM bar
  UNION ALL
  SELECT * FROM other`
Run Code Online (Sandbox Code Playgroud)

并将其与DB.Query一起使用.

rows, err := db.Query(query)
Run Code Online (Sandbox Code Playgroud)

您可以使用许多不同的sql数据库有许多不同的驱动程序.他们都会给你一个DB对象来使用.所以你可以适当地使用DB.Prepare,DB.Query.检查database/sql包的文档以获取更多信息.