首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理来自数据库golang mysql的字段为null时的结果

问处理来自数据库golang mysql的字段为null时的结果
EN

Stack Overflow用户
提问于 2018-04-09 18:56:58
回答 2查看 2.9K关注 0票数 1

the result wanted我在go中有一个结构

代码语言:javascript
复制
type Users struct {
    ID    int    `json:"id"`
    Name  string `json:"name"`
    Age   string `json:"age"`
}

我有一个mysql数据库,其中的一些年龄值为零,所以基本上为了使其具有动态性,我一直在寻找解决方案。如果从mysql返回值为nil,则使用"Age string json:-“隐藏该字段。我做了两个查询

代码语言:javascript
复制
   query1: select id,name,age from users where age is not null
   query2: select id,name from users where age is null

我怎么才能使它成为一个动态查询,以显示年龄,如果存在,否则它不显示它?

EN

回答 2

Stack Overflow用户

发布于 2018-04-09 19:04:40

别干那事。取而代之的是,对Age字段使用nil-able类型。*string或sql.NullString将是最自然的选择。然后只需始终选择它,空值将被正确处理。

代码语言:javascript
复制
type Users struct {
    ID    int     `json:"id"`
    Name  string  `json:"name"`
    Age   *string `json:"age"`
}

然后始终使用:

代码语言:javascript
复制
SELECT id, name, age FROM users

当Age在数据库中为NULL时,它在Go中为nil,当它在数据库中不为NULL时,它将是一个指向Go中字符串的非nil指针。

票数 8
EN

Stack Overflow用户

发布于 2018-04-11 20:01:17

在查询中使用ifnull(),以便可以将null值作为''(字符串默认值)获取

代码语言:javascript
复制
select id,name,ifnull(age, '') from users;

然后在年龄的json标签字段中使用omitempty。

代码语言:javascript
复制
type Users struct {
ID    int    `json:"id"`
Name  string `json:"name"`
Age   string `json:"age,omitempty"`
}

如果在Age中获取默认值,那么它将在json响应中被忽略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49731317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档