今天遇到個(gè)問題捺僻,A,B 2張表查詢, 如果B中的沒有對(duì)應(yīng)的數(shù)據(jù)拇舀,會(huì)返回null逻族, 即使 該字段設(shè)置是有默認(rèn)值的。
golang 對(duì)于 null 處理 又會(huì)出錯(cuò)骄崩? 怎么破聘鳞?
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 字段為空,導(dǎo)致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)