2006-04-25

SQL ile Cümledeki Kelimelerin Baş Harflerini Büyütme

Bir çok yerde özellikle konu başlıklarında yazılan cümlede geçen kelimelerin büyük harflerle yazılmasını isteriz. Bu hem görselliği hem de okunabilirliği artırır. Bunun yanında özel kelimeleri yada özel kısaltmaların ise (MCP, SQL, DDL, DML vs gibi) tamamı büyük harflerle yazılmış kısaltmaların değişmemesini isteriz. Eğer istedikleriniz bunlar ise istediğiniz Stored Procedure aşağıdaki gibidir:

Kod:

/*
Amaç : Cümledeki kelimelerin başlıklarını büyütüp diğer harfleri küçültme. Konu başlıklarınızı düzeltmek için çok işinize yarayacak
Yazan : Mehmet GÜZEL
Tarih : 24/04/2006
Eklenti : - Tamamen büyük harf olan kelimelerin olduğu gibi kalması
Örnek : 'MeHMeT GÜZEL' in 'Mehmet GÜZEL' e çevrilmesi gibi

SP nin kullanımına örnek:

DECLARE @mesaj VARCHAR(64)
EXEC BuyukBas 'BEN CETURKu sevMEYI sevdiM ',@mesaj OUT
SELECT @mesaj
*/

CREATE PROCEDURE BuyukBas
@Cumle VARCHAR(64),
@strMesaj VARCHAR(64) OUT

AS

DECLARE @YeniCumle VARCHAR(64),
@tmpCUMLE VARCHAR(64),
@BoslukYeri INTEGER,
@Kelime VARCHAR(32),
@YeniKelime VARCHAR(32),
@IlkHarf CHAR(1)
BEGIN

SET @YeniCumle=''
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(3),SPACE(1))))
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(2),SPACE(1))))
SET @BoslukYeri=1


WHILE((@BoslukYeri<>0) AND (LEN(LTRIM(RTRIM(@Cumle)))>0 ))
BEGIN
SET @tmpCUMLE=LTRIM(SUBSTRING(@Cumle,LEN(@YeniCumle),LEN(@Cumle) +1))
SET @BoslukYeri=(SELECT PATINDEX('%' + SPACE(1) + '%', @tmpCUMLE))
IF @BoslukYeri=0 SET @Kelime=@tmpCumle
ELSE SET @Kelime=LEFT(@tmpCUMLE,@BoslukYeri)
SET @IlkHarf=UPPER((SELECT LEFT(@tmpCUMLE,1)))

SET @YeniKelime=(CASE WHEN UPPER(@Kelime)=@Kelime COLLATE Turkish_CS_AS
THEN RTRIM(LTRIM(@Kelime))
ELSE @IlkHarf + RIGHT(RTRIM(@Kelime),LEN(@Kelime)-1)
END )
SET @YeniCumle=@YeniCumle +SPACE(1) + @YeniKelime
END
SET @strMesaj= LTRIM(RTRIM(@YeniCumle))
END
GO


Not: Türkçe Collation ile oluşturulmuş veritabanlarında Türkçe karakterlerin büyütülüp küçültülmesinde herhangi bir sorun yok.

.::YASAL UYARI::.

©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.