golang中的长查询

时间:2016-03-27 07:05:25

标签: 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)

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

TIA,

2 个答案:

答案 0 :(得分:9)

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

query := `
  SELECT * FROM foo
  UNION ALL
  SELECT * FROM bar
  UNION ALL
  SELECT * FROM other`

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

rows, err := db.Query(query)

您可以使用许多不同的SQL数据库有许多不同的drivers。他们都会给你一个DB对象来处理。因此,您可以适当地使用DB.Prepare,DB.Query。查看database/sql包的文档以获取更多信息。

答案 1 :(得分:1)

有两种方法

1。使用反引号: 在键盘上使用带有符号`(反引号\反引号)。 这样您的查询将类似于

query := `INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
          VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');`

2。使用字符串串联:  在行之间使用字符串连接字符,以便查询看起来像

query :="INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)"+
        "VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');"

我更喜欢第一个:)