A portable approach uses union all
to unpivot the columns to rows and eliminate the duplicates:
select name, add1 as add from mytable
union all select name, add2 from mytable where add2 <> add1
Depending on your database, there may be a better option available. A typical solution is a lateral join - but the syntax highly depend on the database (and not all of them implement that feature).
Edit: in SQL Server:
select t.name, a.add
from mytable t
cross apply (values (add1), (case when add1 <> add2 then add2 end)) a(add)
where a.add is not null