lunedì 16 aprile 2012

Prima lettera maiuscola di ogni parola (Title Case) in SqlServer

Qualche tempo fa ho pubblicato un post (QUI) dove spiegavo come fare il capitalize (ovvero mettere la prima lettera maiuscola e tutto il resto in minuscolo) di una stringa in SQL Server.

Ora voglio integrare quel post mostrando come fare il capitalize di ogni parola della stringa.

Questa attività è un po' più complessa, è infatti necessario creare una funzione personalizzata che farà il lavoro per noi. Ecco come:


CREATE FUNCTION dbo.CapitalizeEveryWord(@input NVARCHAR(4000)) RETURNS NVARCHAR(4000)
AS 
BEGIN
DECLARE @position INT
WHILE IsNull(@position,Len(@input)) > 1
SELECT @input = Stuff(@input,IsNull(@position,1),1,upper(substring(@input,IsNull(@position,1),1))),
@position = charindex(' ',@input,IsNull(@position,1)) + 1
RETURN (@input)
END


Fatto questo, basta invocare la funzione ed il gioco è fatto:


SELECT dbo.CapitalizeEveryWord (Lower(NomeColonna)) FROM NomeTabella