这是一个基于绝对不知道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,
答案 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');"
我更喜欢第一个:)