生活的道路一旦选定,就要勇敢地走到底,决不回头。

发掘积累过程的快感

首页 » BIBLE模型 » GoLang » golang 数据库 scan Converting NULL

golang 数据库 scan Converting NULL


Scan error on column index 15, name "name": converting NULL to string is unsupported

golang 使用数据库查询,绑定结果报错;大概意思就是不能将 null 类型的结果转成 string。

有三种处理方法:

第一种:

package demo

type User struct {
    Id string
    FirstName string
    LastName string
}

func findUserByEmail(ctx context.Context, email string) {
    user := &User{}
    row := DbConn.QueryRowContext(ctx, `
        SELECT id, COALESCE(first_name, '') as first_name, COALESCE(last_name, '') as last_name
        FROM users
        WHERE email = $1
    `, email)
    err := row.Scan(&user.Id, &user.FirstName, &user.LastName)

    // ...
}

重点看是个 COALESCE(first_name, '') as first_name

第二种:

type User struct {
    Id string
    FirstName *string `db:"first_name"`
    LastName *string  `db:"last_name"`
}

将结构体对应字段类型设为指针类型,一劳永逸,不用担心 json 序列化与反序列化问题;重点是这个 FirstName *string db:"first_name"

第三种:

func findUserByEmail(ctx context.Context, email string) {
    user := &User{}
    var st1 sql.NullString
    var st2 sql.NullString
    row := DbConn.QueryRowContext(ctx, `
        SELECT id, first_name, last_name
        FROM users
        WHERE email = $1
    `, email)
    err := row.Scan(&user.Id, &st1, &st2)
    user.FirstName = str1
    user.LastName = str2
    // ...
}

重点是这个 var st1 sql.NullString

互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号