Bugün bir karar aldım!

Artık günlük çalışmalarımda SQL’de karşılaştığım ufak problemlerin çözümlerini blog’umda paylaşacağım. Bunun ilki, SQL de oldukça kısıtlı bir şekilde yapılabilen STRING işlemleri ile ilgili.

Bugün, büyükçe bir tablonun bir kolonundaki son kelimeyi alıp işlemem gerekti. Birçok programlama dilinde, performanssız olsa dahi yapacağınız şeylerin başında verilen string’i boşluk karakterlerini kullanarak kelime kelime bir array içerisine almak (String().Split(char ch)), sonra da o array’in son elemanına ulaşmak gelirdi.

SQL’de ise biraz daha zahmetli bu işler. Aşağıda, verilen bir string içerisindeki son kelimeyi döndüren kısa bir kod parçası bulabilirsiniz.

DECLARE @string nvarchar(512)

SET @string = ‘ilk_kelime ara_kelime_1 ara_kelime_2 son_kelime’

DECLARE @StartIndex int

DECLARE @LastIndex int

SET @StartIndex = 1

WHILE (@StartIndex > 0)

BEGIN

SET @LastIndex = @StartIndex

SET @StartIndex = CHARINDEX(‘ ‘ COLLATE Turkish_CI_AI, @string COLLATE Turkish_CI_AI, @StartIndex + 1)

END

SELECT RIGHT(@string, LEN(@string) – @LastIndex)