使用db.Query
和rows.Scan
用sql.NullString
值填充NULL
后,其.Valid
字段为false
,是否可以保证其.String
保留空字符串""
吗?
我问,因为如果我可以使用它,将很时髦:
res := ns.String
代替这个:
var res string
if ns.Valid {
res = ns.String
}
https://golang.org/pkg/database/sql/#NullString
最佳答案
在current implementation中,是的,但是文档明确表示要在使用String之前检查Valid。忽略文档需要您自担风险。
为了安全起见,只需将类型复制到自己的包装中即可;那么您就会知道下一个Go版本不会改变它。
如果您不这样做,我强烈建议您编写一个测试:
func TestEmptyNullString(t *testing.T) {
var x sql.NullString
x.String = "foo"
x.Scan(nil)
if x.String != "" {
t.Error("string not empty after Scan")
}
}
关于go - Go的sql.NullString的值是否可预测为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49619620/