If you're using SQL Server 2005, you can write a native CLR procedure:
static string ToFriendlyCase(this string PascalString)
{
return Regex.Replace(PascalString, "(?!^)([A-Z])", " $1");
}
Outputs:
Convert My Crazy Pascal Case Sentence To Friendly Case
If you're not using 2005, then you've gotta either parse it manually or reference the regex object using extended procedures. A good article can be found here:
http://www.codeproject.com/KB/mcpp/xpregex.aspx
Edit: A UDF can't affect the database, so you can't register the regex com object, so that casts that idea out. A stored procedure however, can - so that might be a route.
In order to do a case sensitive comparison, you're going to have to set the collation for the query to be case sensitive, and then use a replace I think... here's an article that might be helpful in pointing you off in the right direction:
http://www.mssqltips.com/tip.asp?tip=1032