golangクエリデータはNULL値の問題が発生しました

golangは、列にNULL値が、その後、失敗するフィールドの背中を抽出し、データベースを照会する際に遭遇、このような状況には2つの解決策があるかもしれません:
1.制限データベースが空いていないか、既定値に、またはにデータが空白のを発見されないように、選択クエリNULL値は、処理されたときに
使用して処理2. sql.nullstring

次の例では、プロセスをsql.sqlstringされています。

 

    パッケージメイン

    インポート
        _ " github.com/go-sql-driver/mysql " 
        " FMT " 
        " データベース/ SQL " 

    FUNCのnulldel(){ 
        VARのERRエラーが
        接続: = " dmladmin:dmladminする@ TCP(192.168.1.113:3306 )/ DB_ADMIN " 
        デシベル、ERR: = sql.Open(" mysqlの" 接続する)
         場合!誤る= nilの{ 
            fmt.Println(" 、MySQLが失敗した接続アドレス= " + 接続し、)ERR 
        } { 
            sqlContent: = '選択
                                t.statedate、
                                t.table_schema、
                                t.table_name、
                  t1.table_comment、
                  t.table_rows、
                                t.lm_table_rows、
                                ケース場合t.lm_table_rows > 0、次いで
                                ラウンド((t.table_rows - t.lm_table_rows)* 100 / t.lm_table_rows、2 そうでなければ0端growth_rate、
                                t.gather_interval 
                            からT tb_table_grouth_stat INFORMATION_SCHEMA.TABLES t1に参加左
                            t.table_schemaに = t1.table_schema
                       t.table_name = t1.table_name 
                          t.table_schema ない ' DB_ADMIN ' statedate =(MAX(statedate)を選択からtb_table_grouth_stat)
         ORDER BY 7 DESC限界10 ' 
            行、ERR: = db.Query(sqlContent)
             なら!ERR = ゼロ{ 
                fmt.Println(ERR)
            }{
                 rows.Next(){ 
                    statedate: = sql.NullString {文字列:"" 有効:偽} 
                    TABLE_SCHEMA: = sql.NullString {文字列:"" 有効:偽} 
                    TABLE_NAME。 = sql.NullString {文字列:"" 有効:偽} 
                    table_comment: = sql.NullString {文字列:"" 有効:偽} 
                    TABLE_ROWS: = sql.NullString {文字列:"" 有効:偽} 
                    lm_table_rows: = sql.NullString {文字列:""、有効:}偽
                    growth_rate: = sql.NullString {文字列:"" 有効:偽} 
                    gather_interval: = sql.NullString {文字列:"" 有効:偽} 
                    (rows.Scan&statedate、&TABLE_SCHEMA、およびTABLE_NAME、&table_comment、&TABLE_ROWS、&lm_table_rows、&growth_rate、 &gather_interval)
                     であれば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(){ 
        nulldel()
    }

 

おすすめ

転載: www.cnblogs.com/hxlasky/p/11777425.html