Daniel Janik shows one of the many pain points around user-defined functions in SQL Server:
Note that Query 1 uses a function around the column and this causes a scan which increases IO and CPU utilization. This is because every value in the column for the whole table must have the hyphen removed to see if it is a match.
In Query 2, we see a seek. This is because the value is modified instead of the column.
Click through for a few examples.