如果数据库golang mysql中的字段为空,则处理结果

qzlgjiam  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(696)

结果是我有一个结构

type Users struct {
    ID    int    `json:"id"`
    Name  string `json:"name"`
    Age   string `json:"age"`
}

我有一个mysql数据库,其中一些年龄值为零,所以基本上,为了使其具有动态性,我一直在寻找解决方案。”年龄字符串 json:- 如果从mysql返回值nil,则隐藏该字段。我问了两个问题

query1: select id,name,age from users where age is not null
   query2: select id,name from users where age is null

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

14ifxucb

14ifxucb1#

别那么做。相反,使用nil-able类型作为 Age 现场。 *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 在数据库中为空,则 nil 在go中,当它在数据库中不为null时,它将是指向go中字符串的非nil指针。

von4xj4u

von4xj4u2#

使用 ifnull() 在你的询问中 null 值可以作为 '' (字符串的默认值)

select id,name,ifnull(age, '') from users;

然后使用 omitemptyjson 年龄标记字段。

type Users struct {
ID    int    `json:"id"`
Name  string `json:"name"`
Age   string `json:"age,omitempty"`
}

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

相关问题