- Replace()
- Concat()
- Charindex()
- Left-Right
- Len()
- Lower-Upper
- Ltrim-Rtrim
- Stuff()
- Substring()
- Reverse()
- Patindex()
String Veri Tipleri
String veri tipleri metinleri ifade eder. CHAR, NCHAR, VARCHAR, NVARCHAR, TEXT, NTEXT gibi çeşitleri vardır. Sorguların içerisinde ‘ tek tırnak ‘ içerisine yazılırlar. Hemen kısaca farklarına değinip sonra sql server içerisinde hazır olarak gelen ve bu verilerle çalışırken bize faydalı olacak fonksiyonlardan bahsedelim.
CHAR veri tipine sahip bir kolon oluştururken kolonun kaç karakter olacağını da belirtiriz. Örneğin char(11) dediğimizde maksimum 11 karakter alacak bir kolon oluşturmuş oluruz. Ancak şöyle bir durum var ki, her eklenen satır için char(11) kolonumuz boş bile bırakılsa diskimizde doluymuşçasına yer kaplar. Eğer satırlarımıza gelen veriler dolu gelecek ve gerçekten 11 karakterli bir değerle doldurulacaksa elbette kullanılabilir. Maksimum uzunluğu 8000 karakterdir.
NCHAR veri tipinin tek farkı uluslar arası karakter setlerini desteklemesidir. Mesela Turkish_CI_AS şeklinde bir collation ayarımız varsa başında Char bir alana ä gibi alfabemizde olmayan bir karakter ekleyemeyiz. Diskimizde char bir alanın kapladığı yerin iki katı kadar yer kaplar. Maksimum uzunluğu 4000 karakterdir.
VARCHAR veri tipi ise char ile benzerdir. Chardan tek farkı başında bulunan var ifadesi ile birlikte değişken gibi hareket eder ve içerisinde yer alan değer kadar diskte yer kaplar. Başındaki var ifadesi de zaten variable yani değişken demektedir.
NVARCHAR veri tipi uluslar arası karakter setini destekleyen varchar tipidir. Yine nchar ve char arasında olan gibi bir ilişki vardır ve diskte varcharın kapladığı alanın 2 katı kadar yer kaplar.
Çok fazla detayına girmeden text ve ntext arasındaki ilişkinin de aynı olduğunu. SQL’in yeni sürümlerinde text ve ntext veri tiplerinin kullanılmasının uygun görülmediğini, sadece uyumluluk sorunları ortaya çıkmaması için halen desteklendiğini ve ve maksimum 2gb olabildiğini söylemek yeterli olur.
SQL Replace Kullanımı
replace() fonksiyonu metin içerisindeki bir değeri başka bir değer ile değiştirmek için kullanılır. Mesela bir değişkenimizde ve bir kolonumuzda ‘Sql replace kullanımı’ şeklinde bir metin olduğunu varsayıyorum. Buradaki ‘Sql’ ibaresi yerine ‘T-SQL’ yazdırmak istediğimi düşünelim kodumun nasıl olurdu?
1 |
Select replace('Sql replace kullanımı','Sql','T-Sql') |
Yani kısaca fonksiyonumuz 3 parametre alır, bu parametreler virgül ile birbirinden ayrılır. İlk parametremiz değişikliğe uğrayacak metini, ikinci parametre değiştirilecek kısmı üçüncü parametre ise yeni değerimizi ifade eder. Yukarıdaki sorgu çalıştığında Ekrana T-Sql replace kullanımı yazacaktır. Farklı kullanım örneklerini görelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
-- Değişkenler ile kullanabiliriz. DECLARE @degiskenAdi varchar(50) = 'SQL veritabanı replace kullanımı'; Select replace(@degiskenAdi,' veritabanı',' değişkenler ile') -- Çalıştırdığımızda ekrana Sql değişlenler ile replace kullanımı yazacaktır. --personel isimli tablomuzda Ad,Soyad ve Id kolonları olduğunu varsayalım. Select replace(Ad,'Ahmet','Mehmet') as Ad, Soyad, Id from personel --Tüm Mehmet isimlerini Ahmet olarak ekranda gösterir. -- Where kısmında da kullanılabilir ancak pek tavsiye etmeyiz çünkü index kullanımı konusunda -- sıkıntılara sebebiyet verebilir. Örneğin Ad kolonunda index var diyelim komutumuzda aşağıdaki gibi olsun. Select * FROM personel where replace(Ad,' ','') = 'Ahmet' -- Bu komut aslında ad kolonundaki tüm boşlukları silecek ve içerisinde Ahmet'i arayacaktır. -- İndex varsa tüm indexi Scan yapacak yani tarayacaktır. |
Sanırım replace için bu kadarı yeterli olur.
Sql Concat Kullanımı
Concat string ifadeleri birleştirir. Sınırsız sayıda parametre atanabilir ve bu parametreler virgül ile ayrılır.
1 |
Select Concat('SQL',' Concat',' Kullanımı') |
Komutunun çıktısı SQL Concat Kullanımı şeklinde olur. Yine aynı şekilde değişkenler ile veya kolonlar ile kullanılabilir.
1 2 3 4 5 6 7 |
Select Concat(colon1,colon2,colon3) from x Select Concat(@aaa,@bbb,@ccc) --veya birlikte de kullanmak mümkün Select Concat(colon1,' metin',@aaa) |
SQL Charindex Kullanımı
Bir metin içerisinde belirlediğimiz karakterleri aramak ve aradığımız değerin kaçıncı karakterde olduğunu bulmak için kullanılır. 2 veya 3 parametre alır. İnteger değer döner.
1 2 3 4 5 6 7 8 9 |
Select CHARINDEX('x','Sql charindex kullanımı') --Sorgusunu çalıştırdığımızda bize x karakterinin konumu olan 13'ü verecektir. --Ayrıca üçüncü parametre olarak bir integer ifade verebiliriz bu da bize arama işleminin --kaçıncı karakterden başlayarak yapılacağını söyler. Mesela aramaya 14. karakterden başlarsak; Select CHARINDEX('x','Sql charindex kullanımı',14) Sonuç 0 olarak dönecektir. Çünkü 14üncü karakterden sonra bir x harfi bulunmamaktadır. |
Sql Left – Right Kullanımı
Metin ifadesinin sağından veya solundan istediğimiz kadar veriyi alır gerisini almaz.
1 2 3 4 5 6 7 8 9 |
SELECT LEFT('Sql Ogreniyorum', 3) -- Komutu çalıştığında ekrana Sql yazacaktır. Select Right('T-Sql ogreniyorum', 11) -- Komutu çalıştığında ekrana ogreniyorum yazacaktır. --Yine string tipindeki değişkenlerle veya kolonlarla kullanılabilir. |
Sql LEN Kullanımı
Metinsel bir ifadenin karakter sayısını verir. Tek parametre alır ve integer tipinde bir değer döner.
1 2 3 |
Select LEN('Sql len kullanimi'); Komutu çalıştığında ekrana 17 yazacaktır. |
Sql Lower ve Upper Kullanımı
Metinlerin tüm harflerini büyük veya küçük yapmak için kullanılır. Tek parametre alır ve yine string bir ifade döndürür.
1 2 3 4 5 6 7 |
SELECT LOWER('Sql Lower Kullanımı') -- Çalıştığında ekrana sql lower kullanımı yazar. SELECT UPPER('Sql Upper Kullanımı') -- Çalıştığında ekrana SQL UPPER KULLANIMI yazar. |
Sql Ltrim – Rtrim Kullanımı
Metinsel ifadenin sağında ve solunda boşluklar varsa onları silerek gösterir. Tek parametre alır ve string bir ifade döndürür.
1 2 3 4 5 6 7 |
Select ltrim(' ltrim kullanımı') -- Çalıştığında ekrana ltrim kullanımı yazar baştaki boşlukları siler. Select rtrim('rtrim kullanımı ') -- Çalıştığında ekrana rtrim kullanımı yazar sondaki boşlukları siler. |
Sql STUFF Kullanımı
Çalışma mantığı replace ve substring fonksiyonlarına benzer. 4 parametre alır ve string bir ifade döndürür.
1 2 3 4 5 |
SELECT STUFF('Stuff kullanımı', 1, 5, 'replace') -- Komutu çalıştığında 1. karakterden 5. karaktere kadar olan kısmı 1 ve 5 dahil olmak üzere siler. -- yerine replace yazar. -- Yani ekranda replace kullanımı ibaresini görürüz. |
Sql Substring Kullanımı
Substring fonksiyonu metin içerisinde belirttiğim bir kısmı almamızı sağlar. 3 parametre alır ve string bir ifade döndürür.
1 2 3 4 |
SELECT SUBSTRING('SQL Substring Kullanımı', 1, 3) -- Sorgu çalıştığında 1 ve 3. karakterler dahil olmak üzere arasındaki değerleri alır. -- Yani ekrana SQL yazacaktır. |
Sql Reverse Kullanımı
Metinsel ifadeleri ters çeviren bir fonksiyondur.
1 2 3 |
SELECT Reverse('reverse kullanimi') -- Komutunu çalıştırdığımızda ekrana iminalluk esrever yazacaktır. |
Sql Patindex Kullanımı
Aslında temelde charindex ile aynı işi yapar ancak biraz daha yeteneklidir diyebiliriz. Charindexin yapamadığı ancak patindexin yapabildiği şey ise belirli bir desen arayabiliyor oluşumuzdur. Hemen örnekle anlatalım.
1 2 3 4 5 6 7 8 |
SELECT PATINDEX('%x%kul%', 'patindex kullanimi') -- Komutu çalıştığında 8 değerini dönecektir. -- Burada aynı where koşulundan sonraki like operatöründe olduğu gibi desen verebiliyoruz. -- Yukarıdaki örnekte x karakterinden sonra herhangi bir karakter gelebilir ancak ardından -- kul karakter seti gelen bir kayıt varsa bize ilk bulduğu ibarenin kaçıncı karakterde olduğunu döner. -- Sanırım biraz karmaşık anlattım ama bir kaç örnek yaparak pekiştirebilirsiniz. |