golang query data encounters a null value problem

golang encountered in querying the database when the column null values, then extract the back of the field will fail, there may be two solutions to this situation:
1. Restrict database is not empty or to a default value, or in when the select query null values are processed, so that data is not found out blank
2. sql.nullstring processed using

the following example is sql.sqlstring process:

 

    package main

    import (
        _ "github.com/go-sql-driver/mysql"
        "fmt"
        "database/sql"
    )

    func nulldel(){
        var err error
        connect := "dmladmin:dmladmin@tcp(192.168.1.113:3306)/db_admin"
        db, err := sql.Open("mysql", connect)
        if err != nil{
            fmt.Println("connect mysql failed, address = " + connect, err)
        } else{
            sqlContent := `select
                                t.statedate,
                                t.table_schema,
                                t.table_name,
                  t1.table_comment,
                  t.table_rows,
                                t.lm_table_rows,
                                case when t.lm_table_rows > 0 then
                                round((t.table_rows - t.lm_table_rows)*100/t.lm_table_rows,2)
                                else 0 end growth_rate,
                                t.gather_interval
                            from tb_table_grouth_stat t left join information_schema.tables t1
                            on t.table_schema = t1.table_schema
                     and t.table_name = t1.table_name
                          where t.table_schema not in ('db_admin') and statedate = (select max(statedate) from tb_table_grouth_stat)
         order by 7 desc limit 10`
            rows, err := db.Query(sqlContent)
            if err != nil{
                fmt.Println(err)
            } else{
                for rows.Next() {
                    statedate := sql.NullString{String:"", Valid:false}
                    table_schema := sql.NullString{String:"", Valid:false}
                    table_name := sql.NullString{String:"", Valid:false}
                    table_comment := sql.NullString{String:"", Valid:false}
                    table_rows := sql.NullString{String:"", Valid:false}
                    lm_table_rows := sql.NullString{String:"", Valid:false}
                    growth_rate := sql.NullString{String:"", Valid:false}
                    gather_interval := sql.NullString{String:"", Valid:false}
                    rows.Scan(&statedate, &table_schema, &table_name,&table_comment,&table_rows,&lm_table_rows,&growth_rate,&gather_interval)
                    if ! table_comment.Valid {
                        table_comment.String="未知"
                    }
                    fmt.Println(statedate, table_schema, table_name,table_comment,table_rows,lm_table_rows,growth_rate,gather_interval)
                    fmt.Println(statedate.String, table_schema.String, table_name.String,table_comment.String,table_rows.String,lm_table_rows.String,growth_rate.String,gather_interval.String)
                }
            }
        }
    }
    func main() {
        nulldel()
    }

 

Guess you like

Origin www.cnblogs.com/hxlasky/p/11777425.html