String Fonksiyonları

SQL Server'da en sık yapılan işlemler, yazılımın diğer tüm bölümlerinde olduğu gibi string işlemleridir. Bu işlemin ne olduğunu gelin öğrenelim.

SQL Server'da en sık yapılan işlemler, yazılımın diğer tüm bölümlerinde olduğu gibi string işlemleridir. Bu işlemin ne olduğunu gelin öğrenelim.

ASCII NCHAR SOUNDEX
CHAR PATINDEX SPACE
CHARINDEX REPLACE STR
DIFFERENCE QUOTENAME STUFF
LEFT REPLICATE SUBSTRING
LEN REVERSE UNICODE
LOWER RIGHT UPPER
LTRIM RTRIM  


ASCII
Karakterin ASCII kod tablosundaki karşılığını verir.

ASCII(A)
65 sonucunu verir

CHAR
Girilen 0-255 arası sayının ASCII tablo karşılığını verir.
CHAR(65)
A sonucunu verir

Ascii ve Char fonksiyonları veri türü char,varchar, text (text veri türü yakında kaldırılacaktır) veri türleri için kullanılır. Bu türler herbir karakter için 1 byte yer kaplarlar. 255 e kadar karakter karşılığı vardır. Bu karakterler kümesine Ascii karakter kod tablosu adı verilir. Kod tablosu için tıklayınız.

NCHAR
Sayının Unicod standartlarınca tanımlanmış karşılığını verir
Nchar(63000)

UNICODE
Karakterin Unicode tablosundaki karşılığını verir.
Unicode('¾')

Nchar ve Unicode fonksiyonları nchar,nvarchar ve ntext veri türleri ile kullanılır. Bu türler herbir karakter için 2 byte yer kaplarlar. 65536'ya kadar karakter desteği (çince, fince vs. dillerdeki karakterler) vardır. Unicode hakkında detaylı bilgi için tıklayınız.

CHARINDEX
1. katardaki ifadenin 2. katardaki pozisyonunu verir
Charindex('ne','deneme')
ne ifadesininin deneme deki yerini döndürür. Sonuç 3 olur.

PATINDEX
Bir ifadenin kaydın kaçıncı karakterinden itibaren başladığını bulur.
SELECT id,baslik,PATINDEX('%kayseri%',icerik) FROM haber
sonuçta id, baslik ve icerik alanında kayseri kelimesinin kaçıncı harften sonra başladığını yazar.
Patindex'te like ifadesinden kullanılan % _ [^] [] karakterleri kullanılabilir. Bunlar Charindex'te kullanılamaz.


STUFF
Katar  ifadenin belli bir konumundan başlayarak belirtilen kadarını siler, sildiği yere yeni katar ifade ekler
Stuff(‘fatih topcu’,2,5,’deneme’)

Sonuç fdenemetopcu olur. 2. den başlayarak 5 harfi (5.harf boşluk) sildi, o araya deneme yazdı.

SUBSTRING
Bir katar ifadeden, belli bir konumdan başlayarak belirtilen kadarını almasını sağlar
Substring(‘deneme’,1,1)
Sonuç d harfi olur. 1. konumdan başlayarak 1 tanesini aldı

Select adi, soyadi, substring(okulu,1,1) as okulunilkharfi from personel

REVERSE
Katar ifadeyi ters çevirir
Reverse(‘Akml’)
Sonuç lmkA olur
Select adi, reverse(soyadi) from personel

REPLICATE
Katarı ya da harfi istenilen sayı kadar çoğaltır
Replicate(‘0’,4)
Sonuç 0000

REPLACE
Bir katardaki herhangi bir ifadeyi başka bir ifade ile değiştirir
Replace(‘deneme’,’e’,’o’)
Sonuç donomo olur.

LOWER
Büyük harfleri küçük harfe çevirir.


UPPER
Küçük harfleri büyük harfe çevirir.

RIGHT
Katarın sağından belirtilen sayı kadarını alır

LEFT
Katarın solundan belirtilen sayı kadarını alır

LTRIM
Katarın solundaki boşlukları siler

RTRIM
Katarın sağındaki boşlukları siler


LEN
Katarın uzunluğunu verir. Sağdaki boşluklar sayılmaz. Ortadaki ve soldaki sayılır.


SOUNDEX ve DIFFERENCE
Difference iki katardada olan karakterlerin kaç tane olduğunu verir.
SELECT DIFFERENCE('Fatih', 'Fırat')
Sonuç 3

Soundex ise iki katara ait 4 haneli soundex kod üretir. İlk harf katarların ilk harfi olur. Daha sonraki harflerse aşağıdaki eşleştirme tablosundan o harfe karşılık gelen sayı olur.

1 : B,F,P,V
2 : C,G,J,K,Q,S,X,Z
3 : D,T
4 : L
5 : M,N
6 : R
Kod yok : A,E,H,I,O,U,Y,W

SELECT SOUNDEX ('Fatih'), SOUNDEX ('F ırat')
Sonuç F300 F000 olur


Sorgulamalarda string alanlara ait arama işlemlerinde like metodunu sıklıkla kullanırız. Like büyük hacimli tablolarda işimizi yavaşlatabilir. Bu gibi durumlarda SOUNDEX ve DIFFERENCE fonksiyonları kullanılır

Where koşulunda aşağıdaki şekilde kullanabiliriz:

SELECT ad FROM personel WHERE SOUNDEX(ad)=SOUNDEX('Chris')
Bu sorgu sonucu benzerlik kodu 'Chris' ile aynı olan isimler döner.

DIFFERENCE fonksiyonu da bize bu 4 haneli kodlardan iki string arasındaki benzerliği vermektedir.
SELECT ad FROM personel WHERE SOUNDEX(ad)=SOUNDEX('Chris')

Bu sorguyla da adı 'Chris' ile % 75 veya daha fazla benzer olan kayıtları sorguladık.

Telefon +90 505 747 42 84
Email info@devedijital.com
Adres
Tacettin Veli Mahallesi Halit Narin Caddesi Bahadır Plaza Kat:11 Daire:41 38230 Deve Dijital Melikgazi/Kayseri/Türkiye