NULL - отсутствие значения. Сравнение с NULL дает NULL (не true/false): нужны IS NULL, IS NOT NULL. Агрегаты игнорируют NULL. В Go сканируют в sql.NullString, sql.NullInt64 или указатели (*string). COALESCE(col, default) в SQL подставляет значение по умолчанию. При маппинге в структуры удобны типы с указателями или sql.Null*.
var name sql.NullString
err := row.Scan(&name)
if name.Valid { use(name.String) }