diff --git a/decimal.go b/decimal.go index b48cfa9..bf27f08 100644 --- a/decimal.go +++ b/decimal.go @@ -1864,6 +1864,10 @@ func (d *Decimal) Scan(value interface{}) error { *d, err = NewFromString(unquoteIfQuoted(string(v))) return err + case big.Int: + *d = NewFromBigInt(&v, 0) + return nil + default: return fmt.Errorf("could not convert value '%+v' to any known type", value) } diff --git a/decimal_test.go b/decimal_test.go index d288821..7e007bd 100644 --- a/decimal_test.go +++ b/decimal_test.go @@ -2479,6 +2479,11 @@ func TestDecimal_Scan(t *testing.T) { scanHelper(t, dbvalueStr, expected) scanHelper(t, valueStr, expected) + // test big.Int + value := big.NewInt(dbvalueInt) + expected = NewFromBigInt(value, 0) + scanHelper(t, *value, expected) + type foo struct{} a := Decimal{} err = a.Scan(foo{})