golang查詢數據遇到空值問題


golang在查詢數據庫的時候遇到有空值的列,那么后面的字段提取就會失敗,針對這種情況可以有2個辦法解決:
1.限制數據庫不為空或給個默認值,或是在select查詢的時候對空值進行處理,使其查出來的數據不為空
2.采用sql.nullstring進行處理

下面的例子就是sql.sqlstring處理:

 

 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() }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM