Yazılımın her alanında olduğu gibi SQL Server üzerinde de en sık yapılan işlemler string işlemleridir. Bu yazımızda SQL Server içerisinde kullanılan string fonksiyonlarını işliyor olacağız.
ASCII
Parametre olarak aldığı stringin ilk harfinin ASCII karşılığını verir.
SELECT ASCII('ABC') AS A, ASCII('B') AS B, ASCII('a') AS a, ASCII('b') AS b, ASCII(1) AS [1], ASCII(2) AS [2];
CHAR
ASCII fonksiyonunun tersine parametre olarak aldığı int değerinin karakter karşılığını vermektedir.
SELECT CHAR(65), CHAR(66), CHAR(97), CHAR(98), CHAR(49), CHAR(50)
CHAR fonksiyonu kullanılarak yeni satır, tab, satır başı gibi kontrol karakterleri de insert dilebilir. Örneğin aşağıdaki örnekte kişinin adı ve soyadı araya enter karakteri eklenerek alt alta yazıyor.
DECLARE @N NVARCHAR(40) SET @N = 'Sait' + CHAR(13) + 'ORHAN' PRINT @N
CHARINDEX
Verilen iki parametreden ilk verilen değeri ikinci parametre içerisinde arar ve bulduğu ilk indeksi verir. Üçüncü parametre de isteğe bağlı ve verilmesi durumunda verilen indekten sonrası için arar. Aranan değer bulunmaz ise 0 değerini döner.
select CHARINDEX('HAN', 'Sait ORHAN') select CHARINDEX('HAN', 'Sait ORHAN', 7)
CONCAT
Parametre olarak aldığı string değerlerini birleştirir.
SELECT CONCAT ( 'Bugün ', 'Günlerden ', 25, '/', '09' ) AS Tarih;
CONCAT_WS
Concat fonksiyonu ile aynı şekilde çalışır ancak fark olarak stringleri birleştirirken araya ilk parametreyi koyar. Örneğin aşağıda yukarıdaki örneği “,” ile birleştiriyor.
SELECT CONCAT_ws (',', 'Bugün ', 'Günlerden ', 25, '/', '09' ) AS Tarih;
LEFT
İki parametre alır. İlk parametre bir string değer alır, ikinci parametre olarak bir int değer alır. Sonuç olarak int değeri kadar harfi stringin solundan döndürür.
SELECT LEFT('SAİT ORHAN', 3), LEFT('SAİT ORHAN', 4), LEFT('SAİT ORHAN', 6), LEFT('SAİT ORHAN', 7)
LEN
Parametre olarak aldığı string değerin uzunluğunu döndürür.
SELECT LEN('SAİT ORHAN') ------------Sonuç -- 10
LOWER
Parametre olarak aldığı stringin tümünü küçük harfe çevirerek dödürür.
SELECT lower('SAİT ORHAN') ------------Sonuç -- sait orhan
LTRIM
Parametre olarak aldığı stringin solunda olan bütün boşlukları kaldırır.
SELECT LTRIM(' SAİT ORHAN ')
PATINDEX
İlk parametrede aldığı paterni ikinci parametrede verilen strin içerisinde arar ve bulduğu ilk indeki döndürür. Bulamazsa 0 döner.
select PATINDEX('%R_A%', 'SAİT ORHAN') select PATINDEX('%R%', 'SAİT ORHAN') select PATINDEX('SA%', 'SAİT ORHAN') select PATINDEX('%AN', 'SAİT ORHAN')
REPLACE
Üç parametre alır. İkinci parametrede verilen string değeri birinci parametrede verilen string içerisinde arar ve üçüncü parametrede verilen değer ile değiştirir. Örneğin aşağıdaki örnekte “sai1orhan1” string değerinde geçen “1”leri “2” olarak değiştiriyor.
SELECT REPLACE('sai1orhan1', '1', '2') --Sonuç -- sai2orhan2
REPLICATE
Birinci parametrede verilen string değerini ikinci parametrede verilen sayı kadar tekrar ederek döner.
SELECT REPLICATE('12', 3) --Sonuç -- 121212
REVERSE
Verilen string değeri ters çevirir.
SELECT REVERSE('123456789') --Sonuç -- 987654321
RIGHT
LEFT fonksiyonu ile aynı çalışır. Farkı metni sağdan alıyor olmasıdır.
RTRIM
LTRIM fonksiyonu ile aynı çalışır. Farkı stringin sağındaki boşlukları siliyor olmasıdır.
SPACE
Parametre olarak aldığı sayı değeri kadar boşluk döndürür.
SELECT 'SAİT' + SPACE(7) + 'ORHAN' SELECT 'SAİT' + SPACE(16) + 'ORHAN' SELECT 'SAİT' + SPACE(2) + 'ORHAN'
STRING_AGG
Select sorgusunda birinci parametre olarak kendisine verilen kolon değerini ikinci parametrede verilen karakter ile bölerek gösterir. Aşağıdaki örnekte Code alanını arasına “,” koyarak gösteriyor
SELECT STRING_AGG(Code, ',') from DocsTypes --Sonuç -- EN,FR,KA,LS,OR,PL,PR,PS,SE,ST,TL,TS
STRING_SPLIT
Birinci parametrede verilen metni ikinci parametrede verilen karaktere göre ayrıştırır. Geriye value adında kolon barındıran ve satırlarında karaktere göre ayrıştırma sonucunu tutan bir tablo döner.
SELECT * from STRING_SPLIT('Bu metin boşluk karakterine göre ayrıştırılacak', ' ')
SUBSTRING
String içerisinden belli bir bölümü döndürür. Üç parametre alır. İlk parametrede işlem yapılacak string değeri, ikinci parametrede alınacak alt parçanın başladığı index değeri ve son parametre olarak da alınacak alt parçanın uzunluğunu alır.
SELECT SUBSTRING('Bu metin boşluk karakterine göre ayrıştırılacak', 1, 4) SELECT SUBSTRING('Bu metin boşluk karakterine göre ayrıştırılacak', 5, 10) SELECT SUBSTRING('Bu metin boşluk karakterine göre ayrıştırılacak', 25, 1000) --Sonuç -- Bu m -- etin boşlu -- ine göre ayrıştırılacak
TRIM
LTRIM ve RTRIM ile aynı çalışır. Farkı stringin hem sağ hem solundan boşlukları siliyor olmasıdır.
UPPER
LOWER ile aynı çalışır. Verilen stringin tamamını büyük harfe çevirir.