Quite frequently, you have to load data from another system. One of the biggest hassles during this process is determining which rows have changed in order to apply updates to only that subset of rows. You could create a very complicated process that joins the primary key and then proceeds to check, one column at a time, if the new data is different from the existing data.
Instead of doing that, you can not only simplify the process, but dramatically improve the comparison speed. Just calculate a checksum on the source and destination rows. Then join the source and destination tables together by the primary keys and the rows where the checksum does not match are the only one which have changed.
You can choose to utilize just the regular CHECKSUM function which is case insensitive or BINARY_CHECKSUM which is case sensitive. Yes, both of these functions return an integer value and it is possible for the checksum to calculate the same value even when the data does not match. But, the odds of this occuring are so astronomical, particularly when you are joining on the primary key, it is not even worth consideration.