SQL’de bir string’in son kelimesini bulmak

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)

SQL 2005′te anlamsız yedekleme hataları

Haftalardır SQL 2005′te bulunan veritabanımızın yedeğini almaya çalışırken pek fazla açıklama içermeyen bir hata mesajı alıyorduk ve yedekleme işlemi başlamıyordu. Herzamanki gibi veritabanımızın TASKS menüsünden BACKUP seçeneğini tıklayarak girdiğimiz BACKUP penceresinde OK tuşuna tıkladığımızda şu hatayı alıyorduk:

İnternette yaptığım araştırmalarda benzer sorunlarla karşılaşan kimseye rastlamamış olmam sorunu daha da ilginç kıldı. Fakat çözümünü bulamadığımımz bu sorun bizi offline yedekleme (MDF dosyalarını kopyalama) yöntemine mecbur bıraktı. 

Bugün bu sorunun çözümünü şans eseri de olsa bulduk. Sınır koymadığınız sürece büyüyen LOG dosyalarını sıfırladık ve sorun kendiliğinden yok oldu. Sebebini bilemiyorum fakat şişen log dosyaları (10GB boyutundaki bir LOG’dan bahsediyorum) böyle bir soruna neden açabiliyormuş demekki.



© Copyright 2010 Eren Baydemir. Tüm hakları saklıdır.