Any function against a table column in a WHERE clause is not a good idea and is potentially bad for performance, because it prevents index seeks for that comparison.
Remember that SQL has to create one plan before the query runs that always satisfies the query.
Thus, when you code something like:
WHERE fldinfo = ISNULL(@parameter,fldinfo)
you force SQL to scan the fldinfo column, rather than seek, because it would be too complex for SQL to try to analyze function calls, which could be arbitrarily complex. Therefore, SQL, to be sure of correct results, must do a scan rather than a seek to match those values.
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial: "If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them."