I really dislike this function, as it requires knowledge of how the table was initially created.
Create table t1 (c1 int, c2 int)
will return different results for this function from
Create table t1 (c2 int, c1 int)
For this reason (plus readability) I stick to Update() (with a load of ORs to check several columns at once).