29 Nisan 2012 Pazar

MS SQL 'de String Functions

Merhaba arkadaşlar.
Sql server 'da verileri listelemek için şimdiye kadar "select" ifadesi kullandık. Bunları bazen "view" bazen de "function" lar ile gerçekleştirdik. İhtiyacımıza göre kendi view yada fonksiyonumuzu oluşturmaktan ziyade, bizim için bu temel işleri sistemde hazır tanımlı "System Functions" fonksiyonlarını kullanarak yapabiliriz. İşte bu yazıda sistem fonksiyonları içerisinde tanımlı "String Functions" ları inceleyeceğiz. String fonksiyonlar, string ifadeleri istediğimiz şekilde manüpile ederek geriye bir değer döndürürler. String fonksiyonlar "Object Explorer" penceresinde tüm veritabanlarının altında "Programmabilty", "Functions", "System Functions", "String Functions" sekmesinin altında tanımlı halde bulunurlar.
Görüldüğü üzere hemen hemen hepsi c sharp 'tan gözümüze tanıdık gelmekte. Şimdi bu fonksiyonların bazılarını inceleyelim. Tabi ki herkes tarafından bilinen "Northwind" veritabanını kullanacağız. Ama önce şunu hatırlayalım. String bir ifadenin içinde ' (özel karakter) kullanmamız gerekiyorsa iki kere ('') kullanmalıyız.
SELECT 'Galatasaray''ın Şampiyonluğu'    --Galatasaray'ın Şampiyonluğu
  • LEN: Fonksiyonu bir string ifadenin uzunluğunu sayısal olarak döner. 
     SELECT FirstName,LEN(FirstName) FROM dbo.Employees   
          Şeklinde kullanılır. Personellerin adlarının uzunluğunu geriye döndürür. Fakat "len" fonksiyonu buşlukları saymaz. Aşağıdaki sorguda "len", 6 döner. 
     SELECT LEN('    Gaffar    ')  
     
          Peki ya sayısal bir kolonun uzunluğunu öğrenmeye çalışırsam. 
     SELECT LEN(UnitPrice),UnitPrice FROM dbo.Products
          Görüldüğü üzere "." (nokta) karakterini bile sayacaktır.
  • ToLower-ToUpper: "ToLower" string ifadeyi küçük harflerle, "ToUpper" ise büyük harflerle yazdırmaya yarar. 
     SELECT LOWER('GaFFaR SaLKıM')      --gaffar salkım
     SELECT UPPER('gAffAr sAlkIm')      --GAFFAR SALKIM
  • LTrim-RTrim: Sql server 'da, c sharp 'taki "Trim" fonksiyonu yoktur. Bunun yerine "LTrim" string ifadenin solundaki boşluklar, "RTrim" ise sağındaki boşlukları siler. İki taraftaki boşlukları da silmek isteniyorsa bu iki fonksiyonu içiçe kullanmak gerekir.
     SELECT LTRIM('    Gaffar    ')                  --Gaffar    
     SELECT RTRIM('    Gaffar    ')                  --    Gaffar
     SELECT RTRIM(LTRIM('    Gaffar Salkım    '))    --Gaffar
  • Reverse: String bir ifadeyi tersten yazdırır. 
     SELECT REVERSE('Gaffar Salkım')    --mıklaS raffaG
  • Substring: String bir ifadenin verdiğimiz index numarasından başlayarak, istediğimiz kadar karakterini almamızı sağlar. Geriye yine string bir ifade döner.
     SELECT SUBSTRING('Şampiyon Galatasaray',10,6)   --Galata
          Örneğin gelin personellerin adının son 3 harfini  yazdıralım.
     SELECT FirstName,SUBSTRING(FirstName,(LEN(FirstName)-2),3) FROM dbo.Employees

  • Space: Verilen sayı kadar boşluk karakteri atar.         
     SELECT 'Gaffar'+SPACE(5)+'Salkim'    --Gaffar   Salkim
  • Ascii: Verilen karakterin "ascii" karşılığını verir.
     SELECT ASCII('A')                    --65
  • Char: Verilen "ascii" kodun "char" karşılığını verir.
     SELECT CHAR(65)                      --A
  • CharIndex: Birinci parametresindeki stringin, ikinci stringdeki konumunu yani indexini döndürür. Bulamazsa 0 döndürür.
     SELECT CHARINDEX('büyük','En büyük Galatasaray')   --4  
  • Replicate: Verilen string ifadeyi, verilen sayı kadar tekrar ettirerek yazar.
     SELECT REPLICATE('OK',3)    --OKOKOK
  • Left: Verilen stringin başından verilen sayı kadar alır.
     SELECT LEFT('asa',2)        --as
  • Right:  Verilen stringin sonundan verilen sayı kadar alır.
     SELECT RIGHT('asa',2)       --sa
  • Stuff: Bu fonksiyon aşağıdaki örnekte 1. stringden 2. karakterinden başlayarak 3 karakter siler. Silinenler yerine 2. stringi koyar.
     SELECT STUFF('Gaffar',2,3,'Salkim')    --GSalkimar
  • Str: Verilen "double" sayıyı stringe dönüştürür. 1. parametresi "double" sayı, 2. 'si "double" sayının uzunluğu, 3. 'sü "decimal" kısmının uzunluğudur.
     SELECT STR(123.4,6,1)      --123.4

Umarım yardımcı olabilmişimdir.

Başka bir yazıda görüşmek dileğiyle, hoşçakalın...

Hiç yorum yok:

Yorum Gönder