我的代码如下:
const query = `select *
from %s.dbo.table1
join %s.dbo.table2
on ....
join %s.dbo.table3
on ....
join %s.dbo.table4
on ....`
fmt.Sprintf(query, dbName, dbName, dbName, dbName)
我只是通过将数据库名称插入所有%s
次出现来创建SQL查询。如果不重复dbName
,这是更好的方法吗?
答案 0 :(得分:6)
使用%[1]s
:
const query = `select *
from %[1]s.dbo.table1
join %[1]s.dbo.table2
on ....
join %[1]s.dbo.table3
on ....
join %[1]s.dbo.table4
on ....`
q := fmt.Sprintf(query, dbName)
游乐场:https://play.golang.org/p/2DDiGfxLPk。
文档:https://golang.org/pkg/fmt/。
例如,
fmt.Sprintf("%[2]d %[1]d\n", 11, 22)
将产生" 22 11",而
fmt.Sprintf("%[3]*.[2]*[1]f", 12.0, 2, 6)
相当于
fmt.Sprintf("%6.2f", 12.0)
会产生" 12.00&#34 ;. (...)