SQL Script: Upcase the first letter of each word

CREATE FUNCTION [dbo].[InitCap] ( @InputString varchar(4000) ) 
RETURNS VARCHAR(4000)
AS
BEGIN

DECLARE @Index          INT
DECLARE @Char           CHAR(1)
DECLARE @PrevChar       CHAR(1)
DECLARE @OutputString   VARCHAR(255)

SET @OutputString = LOWER(@InputString)
SET @Index = 1

WHILE @Index <= LEN(@InputString)
BEGIN
    SET @Char     = SUBSTRING(@InputString@Index1)
    SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                         ELSE SUBSTRING(@InputString@Index - 11)
                    END

    IF @PrevChar IN (' '';'':''!''?'',''.''_''-''/''&''''''(')
    BEGIN
        IF @PrevChar != '''' OR UPPER(@Char!= 'S'
            SET @OutputString = STUFF(@OutputString@Index1UPPER(@Char))
    END

    SET @Index = @Index + 1
END

RETURN @OutputString

END
GO
posted @ 2012-07-24 13:51  chunchill  阅读(310)  评论(0编辑  收藏  举报