今天遇到個問題,A,B 2張表查詢, 如果B中的沒有對應的數據,會返回null, 即使 該字段設置是有默認值的。
golang 對于 null 處理 又會出錯? 怎么破?
E.G.
query := `SELECT a, b, c, t2.d FROM t_a t1
LEFT JOIN t_b t2 on t1.s = t2.s WHERE t1.s = ? ORDER BY t2.d DESC LIMIT 0 , 1`
row := this.db.QueryRow(query, sessId)
var a, b, c, d int32
err := row.Scan(&a, &b, &c, &d)
d 字段為空,導致err。
解決方式是用 sql.null
query := `SELECT a, b, c, t2.d FROM t_a t1
LEFT JOIN t_b t2 on t1.s = t2.s WHERE t1.s = ? ORDER BY t2.d DESC LIMIT 0 , 1`
row := this.db.QueryRow(query, sessId)
var a, b, c, d int32
e := sql.NullInt64{}
err := row.Scan(&a, &b, &c, &e)
d = int32(e.Int64)