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

3 commenti:

Anonimo ha detto...

ottimo articolo, una funzione del genere fa sempre comodo sul proprio db, strano che non l'abbiano integrata... ormai di versioni di sqlserver ne sono uscite a bizzeffe :)

grazie!

Quintetto Denner ha detto...
Questo commento è stato eliminato dall'autore.
Luna ha detto...

Grazie!!!! Davvero utile ;)