Scan error: unsupported Scan, storing driver.Value type <nil> into type *string
Use sql.NullString
.
https://godoc.org/database/sql#NullString
Personally, I hate this solution, which is why I normalize my DB so that there are no NULL
s.
Either change
var result []Article
To
var result []sql.NullString
Then take those results and make a []Article
using the checks from the documentation.
Or in your struct, change
Photo *string
To
Photo sql.NullString
And deal with the annoyance of it being a struct instead of a *string
Thanks to ATN, see here for a guide https://medium.com/aubergine-solutions/how-i-handled-null-possible-values-from-database-rows-in-golang-521fb0ee267
You can use any of the below two solutions:-
- You can use
sql.NullString
to handle the field before using scan(). OR - You can replace all the possible
NULL
values with the desired string say''
from the query itself.
For implementing the 1st solution refer to the @RayfenWindspear answer. For the 2nd solution update the query as below:-
SELECT colm1, colm2, COALESCE(photo, '') photo, colm4 FROM Article WHERE photo IS NULL
For MySQL use IFNULL()
or COALESCE()
function to return an alternative value if an expression is NULL:
For SQL Server use IFNULL()
or COALESCE()
function for the same result
MS Access use IsNull
function for the same result
For Oracle use NVL()
function for the same result
Reference: https://www.w3schools.com/sql/sql_isnull.asp