CREATE FUNCTION fn_format_number (@int_value int ) returns varchar(20) AS BEGIN DECLARE @is_negative BIT SELECT @is_negative = CASE WHEN @int_value<0 THEN 1 ELSE 0 END IF @is_negative = 1 SET @int_value = -1*@int_value DECLARE @return_value VARCHAR(20) SET @return_value = CONVERT(VARCHAR, ISNULL(@int_value, 0)) DECLARE @before VARCHAR(20), @after VARCHAR(20) SET @before = @return_value SET @after='' -- after every third character: DECLARE @i INT IF LEN(@before)>3 BEGIN SET @i = 3 WHILE @i>1 and @i < len(@before) BEGIN SET @before = substring(@before,1,len(@before)-@i) + ',' + right(@before,@i) SET @i = @i + 4 END END SET @return_value = @before + @after IF @is_negative = 1 SET @return_value = '-' + @return_value RETURN @return_value END