Sql Server trim Fonksiyonları

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda trim fonksiyonlarından bahsedeceğim. Hadi başlayalım !
trim, birçok programlama dilinde olan fonksiyonlar ve belkide hepsinde metinsel bir ifadenin başında ve sonundaki space boşluklarını siliyorlar. Fonksiyonlar diyorum çünkü bir tane değil, 3 tane çeşidi var. ltrim() fonksiyonu sadece metnin başındaki boşlukları, rtrim() sadece metnin sonundaki boşlukları ve trim() ise hem başındaki hemde sonundaki boşlukları siliyor. ltrim() ve rtrim() fonksiyonları Sql Server 2008 versiyonundan sonra, trim() ise 2017 versiyonundan sonra gelen fonksiyonlar. Yani Sql Server 2012 kullanıyorsanız ltrim() ve rtrim() fonksiyonları çalışacak fakat trim() fonksiyonunu tanımayacaktır. Ayrıca her üç fonksiyonda sadece metnin başındaki yada sonundaki space boşluklarını siler, kelime aralarındaki boşlukları silmez. Örneğin ” Sql Server ” şeklinde bir metnimiz olsun. ltrim() fonksiyonu “Sql Server “, rtrim() fonksiyonu ” Sql Server”, trim() fonksiyonu ise “Sql Server” şekline çevirir, gördüğünüz gibi Sql ve Server kelimeleri arasındaki boşlukları silmez.
Her üç fonksiyonda nvarchar yani metinsel tipte bir tane parametre alıyor ve geriye yine nvarchar yani metinsel tipte veri döndürüyor. Ayrıca bu fonksiyonlar hem select ifadesinde sütun seçme, hemde ekleme, silme ve güncelleme ifadelerinde where koşulu olarak yazılabiliyor. trim() fonksiyonu Sql Server 2017 versiyonundan önce yoktu fakat ltrim() ve rtrim() fonksiyonlarını kullanarak trim() fonksiyonunu da simüle edebiliriz. rtrim() metnin sonundaki, rtrim() metnin başındaki, trim() ise hem başında hemde sonundaki boşlukları sildiğine göre rtrim() ve ltrim() fonksiyonlarını beraber kullanarak dolaylı yoldan trim() fonksiyonunun yaptığı işlevi yapabiliriz.
Örneğin kitaplar adında bir tane tablomuz olduğunu ve bu tablo içerisinde varchar tipte kitapAdi sütunu olduğunu varsayalım. Bu tablo içerisinde birkaç sorgu yazalım;
select * from kitaplar where kitapAdi=trim(' Sefiller ');
select ltrim(kitapAdi) from kitaplar where kitapAdi='Sefiller';
select rtrim(kitapAdi) from kitaplar where kitapAdi='ltrim(' Sefiller');
select ltrim(rtrim(kitapAdi)) from kitaplar where kitapAdi='Sefiller';
Burada yazmış olduğum kodlardan ilki kitapAdi sütunundaki verileri trim() fonksiyonundan geçiriyor yani hem başındaki hemde sonundaki boşlukları silip tüm kitapları getiriyor. İkinci satırda kitapAdi sütunun Sefiller olan kitapların kitapAdi sütununu ltrim() fonksiyonundan geçirip filtreliyor. Üçüncü satırda bu sefer ” Sefiller” şeklinde olan verinin başındaki boşlukları silip kitapAdi sütunundaki arıyor ve çıkan sonuçları da rtrim() fonksiyonundan geçiriyor. Son satırda ise kitapAdi sütunu Sefiller olan kitapları getirip önce rtrim() sonrada ltrim() fonksiyonundan geçirerek getiriyor.
Ben doğrudan sabit verilerle örnekler verdim fakat dışarıdan veri alınan zamanlarda daha çok kullanılmaktalar. Örneğin Sql Server’da fonksiyon ve stored procedurelerde yada bir web sitesinde arama kısmında kullanıcının yazdığı metinlerdeki boşlukları temizlemek ve veritabanındaki verilere uyumlu hale getirmek ve sadece boşluklardan oluşan bir arama yapılmasını önlemek için veri kontrolü yapmak için kullanılıyorlar. Örneğin veritabanındaki kitaplarda kitapAdi değerlerinde hiç boşluk yoksa ve kullanıcı ” Sefiller” şeklinde bir arama yaparsa Sefiller adında bir kitap olsa bile başındaki boşluklardan dolayı herhangi bir veri gelmeyecektir. İşte bunu önlemek için öncelikle trim fonksiyonlarından geçirilerek sonrasında sorguya dahil edilmelidir.
Evet trim fonksiyonları ve kullanımları bu şekilde idi. Tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.