How to Capitalize letters that are after a special character?
Here is one for Caps after any NON-ALPHA character (including spaces/special characters.

Edit: Oops, I didn't realize you wanted ALL letters to be capitalized.  Just thought you meant InitCaps.  I'll leave it up so you can work with it (should just be a matter of changing the REGEX) and mold it to what you need unless others would like me to take it down.

Inspired by (stolen from):
http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/sql-server-proper-case-function/

DECLARE @String VARCHAR(100)

SET @String = 'Hello.this is@aTest'
DECLARE @Position INT
;
--===== Update the first character no matter what and then find the next position that we 
     -- need to update.  The collation here is essential to making this so simple.
     -- A-z is equivalent to the slower A-Z
SELECT @String   = STUFF(LOWER(@String),1,1,UPPER(LEFT(@String,1))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;
--===== Do the same thing over and over until we run out of places to capitalize.
     -- Note the reason for the speed here is that ONLY places that need capitalization
     -- are even considered for @Position using the speed of PATINDEX. 
  WHILE @Position &gt; 0
SELECT @String   = STUFF(@String,@Position,2,UPPER(SUBSTRING(@String,@Position,2))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;

SELECT @String;
-- RETURN @String; --Only for functions

--Output: Hello.This Is@Atest


And here it is as a function:

CREATE FUNCTION dbo.InitialCap(@String VARCHAR(8000))

------------------------------
RETURNS VARCHAR(8000)
     AS
  BEGIN 

DECLARE @Position INT
;
--===== Update the first character no matter what and then find the next postion that we 
     -- need to update.  The collation here is essential to making this so simple.
     -- A-z is equivalent to the slower A-Z
SELECT @String   = STUFF(LOWER(@String),1,1,UPPER(LEFT(@String,1))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;
--===== Do the same thing over and over until we run out of places to capitalize.
     -- Note the reason for the speed here is that ONLY places that need capitalization
     -- are even considered for @Position using the speed of PATINDEX. 
  WHILE @Position &gt; 0
SELECT @String   = STUFF(@String,@Position,2,UPPER(SUBSTRING(@String,@Position,2))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;
-----------------
RETURN @String;
    END ;