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