SQL Server ile T-SQL komutlarını kullanarak yazılmış rakamları harflerden ayıran bir fonksiyon örneğidir.
CREATE FUNCTION RakamlariHarflerdenAyir(@metin VARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @sayac INT
DECLARE @ayiklanan_metin NVARCHAR(100)
SET @sayac=1
SET @ayiklanan_metin = ''
WHILE LEN(@metin)>=@sayac
BEGIN
IF ISNUMERIC(SUBSTRING(@metin,@sayac,1))=1
BEGIN
SET
@ayiklanan_metin = @ayiklanan_metin + SUBSTRING(@metin,@sayac,1)
END
SET @sayac=@sayac+1
END
RETURN
@ayiklanan_metin
END
Sorgu (Açıklamalı)
/*--------------------------------------------------
Fonksiyonumuzun adını RakamlariHarflerdenAyir olarak belirledik.
@metin adında da NVARCHAR tipinde bir parametre belirliyoruz.
Rakamları metinlerden ayıklayacak metnimizi buraya gireceğiz.
--------------------------------------------------*/
CREATE FUNCTION RakamlariHarflerdenAyir(@metin VARCHAR(MAX))
/*--------------------------------------------------
Fonksiyon NVARCHAR tipinde değer döndürecek.
--------------------------------------------------*/
RETURNS NVARCHAR(MAX)
AS
BEGIN
/*--------------------------------------------------
Döngü için @sayac adında bir değişken tanımladık.
Ayıkladığımız rakamları toplamak için de
ayiklanan_metin adında bir değişken tanımladık.
--------------------------------------------------*/
DECLARE @sayac INT
DECLARE @ayiklanan_metin NVARCHAR(100)
/*--------------------------------------------------
Değişkenlerimize ait başlangıç değerlerini tanımladık.
--------------------------------------------------*/
SET @sayac=1
SET @ayiklanan_metin = ''
/*--------------------------------------------------
WHILE döngüsü ile metindeki her bir rakamı/harfi
tek tek kontrol edeceğiz.
Her bir rakam/harf kontrol edildiğinde sayaç çalışıyor.
Tüm rakam/harflerin kontrolü yapıldıktan sonra
sayacın çalışması anlamsız olacaktır.
Bu yüzden @sayac değişkeni @metin değişkeninin
uzunluğundan büyük ise döngüyü durduruyoruz.
--------------------------------------------------*/
WHILE LEN(@metin)>=@sayac
BEGIN
/*--------------------------------------------------
SUBSTRING fonksiyonu ile @metin değişkenindeki
her bir harfi/rakamı sırayla alıyoruz.
ISNUMERIC fonksiyonu ile alınan harfin ya da rakamın
sayısal bir değer olup olmadığını kontrol ediyoruz.
Eğer sonuç 1'e eşitse sayısal bir değerdir ve şartı
sağladığından IF operatörüne ait BEGIN – END arası
komutlar çalışabilir.
--------------------------------------------------*/
IF ISNUMERIC(SUBSTRING(@metin,@sayac,1))=1
BEGIN
SET
/*--------------------------------------------------
@ayiklanan_metin değişkenimizi başta boş ('')
olarak tanımlamıştık.
Fonksiyon çalışırken bulduğu her sayısal ifadeyi
@ayıklanan_metin değişkenindeki değerin yanına
ekleyecektir.
--------------------------------------------------*/
@ayiklanan_metin = @ayiklanan_metin + SUBSTRING(@metin,@sayac,1)
END
/*--------------------------------------------------
Fonksiyon sayısal değer bulmuş olsa da olmasa da
sayacımızı arttırıyoruz.
--------------------------------------------------*/
SET @sayac=@sayac+1
END
/*--------------------------------------------------
Fonksiyon çalışmasını bitirdiği zaman @ayiklanan_metin
değerini sonuç olarak döndürmesini sağlıyoruz.
--------------------------------------------------*/
RETURN
@ayiklanan_metin
END