the result wanted我在go中有一个结构
type Users struct {
ID int `json:"id"`
Name string `json:"name"`
Age string `json:"age"`
}我有一个mysql数据库,其中的一些年龄值为零,所以基本上为了使其具有动态性,我一直在寻找解决方案。如果从mysql返回值为nil,则使用"Age string json:-“隐藏该字段。我做了两个查询
query1: select id,name,age from users where age is not null
query2: select id,name from users where age is null我怎么才能使它成为一个动态查询,以显示年龄,如果存在,否则它不显示它?
发布于 2018-04-09 19:04:40
别干那事。取而代之的是,对Age字段使用nil-able类型。*string或sql.NullString将是最自然的选择。然后只需始终选择它,空值将被正确处理。
type Users struct {
ID int `json:"id"`
Name string `json:"name"`
Age *string `json:"age"`
}然后始终使用:
SELECT id, name, age FROM users当Age在数据库中为NULL时,它在Go中为nil,当它在数据库中不为NULL时,它将是一个指向Go中字符串的非nil指针。
发布于 2018-04-11 20:01:17
在查询中使用ifnull(),以便可以将null值作为''(字符串默认值)获取
select id,name,ifnull(age, '') from users;然后在年龄的json标签字段中使用omitempty。
type Users struct {
ID int `json:"id"`
Name string `json:"name"`
Age string `json:"age,omitempty"`
}如果在Age中获取默认值,那么它将在json响应中被忽略。
https://stackoverflow.com/questions/49731317
复制相似问题