我对golang很陌生,我使用Jmoiron包查询Postgres数据库(选择查询)。我正在做的waY是创建一个string并调用Select(dest接口{},query,args)方法。虽然它工作得很好,但问题是我正在动态地生成sql字符串,因此每个响应的目标结构应该是不同的。
对于ex:-一个查询可以是
Select a,b,c,d from table A ;另一个可能是
Select x,y,z from Table B;据我所知,为Select的工作定义了两个不同的结构:
Struct Resp1{
a string
b string
c string
d string
}和,
Struct Resp2{
x string
y string
z string
}然后调用select作为db.Select(&resp1,query,args)和db.Select(&resp2,query,args),我想如果我可以定义一个公共结构的话
say Resp3{
a string
b string
c string
d string
x string
y string
z string
}基于我的select查询,只填充匹配的列(即第一列仅为a,b,c,d,第二列为x,y,z)。
我试着搜索,但找不到任何线索。
发布于 2016-08-23 15:13:01
我无法在这里得到答案,因为我需要这个,我自己挖出来,我找到了一个有效的方法来解决这个问题。
要解决这个问题,可以将所有字符串值定义为sql.NullString,整数定义为sql.int64,浮点数定义为sql.float64等等。
假设你的表有a,b,c,d,e,f列,对于某些响应,你只需要显示a,b,d,对于其他的d,e等等。而不是在db.Select(.)中创建不同的结构并映射它们语句定义您的结构,如下所示
a sql.NullString `json:"whatever u wish to have as key,omitempty"`
b sql.NullString `json:"b,omitempty"`
c sql.NullString `json:"c,omitempty"`
d sql.int64 `json:"d,omitempty"`
e sql.float64 `json:"e,omitempty"`记住,sql.NullString将被编组为json,并显示一个额外的键(有效:布尔值)。您可以按照这里的方法来修复这个How can I work with sql NULL values and JSON in Golang in a good way?
希望这对某人有帮助!
发布于 2016-08-17 11:01:18
通常,您的struct应该表示SQL表的所有字段,而不仅仅是在SELECT中获取的字段,因此您可以只执行SELECT * FROM...并将响应从db反序列化到结构Resp3。
https://stackoverflow.com/questions/38994419
复制相似问题