No UDF is not the answer. You need to create a View for the "Foo" table, that has transformation like
CREATE VIEW FooView ( first varchar(25), second varchar(25), third varchar(30) ) AS select UPPER(first) as first, UPPER(second) as second, UPPER(third) as third from foo;
then you can issue "select * from FooView" or " select first, second from FooView" and you will get desired results.
Ah! Thank you - I think I may have not been seeing the woods for the trees. I still need a UDF for the function (its not UPPER but another text operation) but of course, creating a view for each table I need to map makes sense!!