* Built in string functions *
4 Aralık 2016 Pazar
ASCII()
İçerisine girilen karakterin Ascii kod karşılığını döndürür.
Örnek:
SELECT ASCII('A') ------------ > 65
SELECT ASCII('1') ------------ > 1
CHAR()
Ascii kod karşılığı olan sayısal ifadeyi, karaktere çevirir.
Örnek :
SELECT CHAR(98) ------------ > b
CHARINDEX()
İlgili ifade içersinde aranan kelimenin yada karakterin kaçıncı sırada olduğunun index'ini verir.
Örnek :
SELECT CHARINDEX('@','abc@d.com') ------------ > 4
LEFT()
İlgili ifade içersinde, girilen adet kadar değeri kelimenin solundan alır ve sonuç kümesinde gösterir.
Örnek :
SELECT LEFT('Ankara',4) ------------ > Anka
LEN()
İfadenin uzunluk değerini verir.
Örnek :
SELECT LEN('İstanbul') ------------ > 8
LOWER()
String ifadenin tümünü küçük harflere çevirir.
Örnek :
SELECT LOWER('BURSA') ------------ > bursa
LTRIM()
İfadenin solundaki boşlukları siler ve sonuç kümesinde gösterilir.
Örnek :
SELECT LTRIM(' Alper') ------------ > Alper
PATINDEX()
Yapı olarak Charindex() 'e benzer. İfade içersinden ilgili kelime yada harfin kaçıncı sırada olduğu bilgisini bize sunar.
Örnek :
SELECT PATINDEX('%güzel', 'Hava güzel') ------------ > 6
REPLACE()
İfade içersinde değişmesini istediğiniz kelimelerin yerinin değişmesini sağlar.
Örnek :
SELECT REPLACE('abc@de.com','.com','.net') ------------ > abc @de.net
REPLICATE()
İlgili string ifadeyi belirtilen sayıda tekrar eder.
Örnek :
SELECT REPLICATE('izmir ',3) ------------ > izmir izmir izmir
REVERSE()
Verilen string ifadedeyi tersten yazar.
Örnek :
SELECT REVERSE('abc') ------------ > cba
RIGHT()
İlgili ifade içersinde, girilen adet kadar değeri kelimenin sağından alır ve sonuç kümesinde gösterir.
Örnek :
SELECT RIGHT('Ankara',4) ------------ > kara
RTRIM()
İfadenin sağındaki boşlukları siler ve sonuç kümesinde gösterilir.
Örnek :
SELECT RTRIM('Alper ') ------------ > Alper
SPACE()
İfade içerisinde ne kadar boşluk bırakılacağını belirten fonksiyondur.
Örnek :
SELECT 'Alper'+ SPACE(1) + 'Çelik' ------------ > Alper Çelik
STUFF()
Maskeleme fonksiyonu olarak bilinir.Belirtilen index den itibaren ilgili ifadeyi yeni atayacağınız değer olarak yer değiştirir. (Genellikle* karakteri ile maskeleme için kullanılır.)
Örnek :
SELECT STUFF('abcd@e.com',2,2,'**') ------------ > a** d@e.com
SUBSTRING()
İfade içersinden bir kısım parça almak için kullanılır. Başlangıç numarası ve kaç karakter alınacağı belirtilir.
Örnek :
SELECT SUBSTRING('Türkiye',1,4) ------------ > Türk
UPPER()
String ifadenin tümünü büyük harflere çevirir.
Örnek :
SELECT UPPER('bursa') ------------ > BURSA
-----------------------------------------------------
Şimdide konunun pekişmesi için örnek birkaç uygulama yapacağız, bunun için Resim-1'de görüldüğü gibi örnek bir tablo oluşturdum.
Soru-Cevap şeklinde gideceğiz, sizlerde cevaba bakmadan kendi tarafınızda soruları çözümlemeye çalışırsanız daha sağlıklı olur.
Soru: EmailAddress kolonunu baz alarak, karakter uzunluğu en fazla olandan, en az olana doğru sıralayınız ?
Cevap: SELECT Name, EmailAddress, LEN(EmailAddress) AS LenghtOfMail
FROM tblEmp ORDER BY 3 DESC
(Bu örnekte yeni ürettiğimiz LenghtOfMail sütunu 3. sırada yer aldığı için ORDER BY 3 dedik.)
Soru: Name kolonunu FirstName ve LastName olarak parçalayınız.Sonrasında yeni ürettiğiniz LastName kolonunun satırlarını büyük karakter olarak gösteriniz.
Cevap: SELECT SUBSTRING(name,1, CHARINDEX(' ', name)) as FirstName,
UPPER(SUBSTRING(Name, CHARINDEX(' ', name)+1,61)) as LastName, Name
FROM tblEmp
(Bu sorunun 1 den fazla cevabı olabilir, benim çözümüm bu şekilde. 61 rakamı afaki verdiğim bir değer, satırın tamamını saydırmak yerine uzunluğunu bildiğim satırdan fazlaca bir rakam ataması yaptım.)
Soru: Önce Name kolonunu sağdan 3 karakter alın daha sonra bunu ters çevirin ardından bu ifadenin ilk karakterini büyüterek çıktı sonucunu sağlayınız.
Cevap: SELECT UPPER(SUBSTRING(REVERSE(RIGHT(Name,3)),1,1))+
SUBSTRING(REVERSE(RIGHT(Name,3)),2,2) as ConvertedRow, Name
FROM tblEmp
Soru: EmailAddress kolonunda bulunan tüm satırların sonundaki "com" u "net" olarak değiştiriniz.
Cevap : SELECT REPLACE(EmailAddress,'.com','.net') FROM tblEmp
Soru: EmailAddress kolonunda bulunan satırların ikinci harfinden başlayıp @ işaretine kadar 4 adet* işareti tanımlaması yapınız. Örneğin: k**** @adventure-works.com
Cevap : SELECT EmailAddress, STUFF(EmailAddress, 2, CHARINDEX('@', EmailAddress)-2, '****')
FROM tblEmp
Soru: Name kolununun ilk kısmını FirstName adıyla parçalayın ve sonuna iki adet boşluk bıraktıktan sonra 3 adet* işareti ekleyiniz.İşlemin sonunda sağdan ve soldan boşluk alınız. Not: Boşluk için space() fonksiyonunu kullanınız.
Cevap :
SELECT RTRIM(LTRIM(SUBSTRING(Name,1, CHARINDEX(SPACE(1), Name,1))+
SPACE(1)+ REPLICATE('*',3))) FROM tblEmp
Not: Charindex fonksiyonu içersinde ' ' yerine kullandığım space(1) fonksiyonunu dikkat ediniz.
Umarım faydalı bir yazı olmuştur. Bir sonraki makalemde görüşmek üzere..