Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Mesaj gönderen mussimsek »

Merhaba,

Makalenin pdf hali : http://www.delphiturkiye.com/dsplus/m.p ... yonlar.pdf

Firebird 2.1 ile pek çok internal fonksiyon eklenip, Firebird'ün bir açığı daha kapandı. Biliyorsunuz daha önce UDF ile ayrı fonksiyonlar çalıştırabiliyordunuz, ama artık elinizde tam bir set var. Hemen hemen bütün işlerinize yetecek kadar internal fonksiyon var.

Tabii bu fonksiyonları select cümlelerinizde, stored procedure'lerde ve trigger gibi veritabanının her yerinde kullanabilirsiniz.

Bir de not : Eğer daha önce internal fonksiyonla aynı isimde bir UDF tanımlamışsanız, o çalışıyor. Mesela ABS isimli bir internal fonksiyonunuz, bir de ABS isimli UDF'iniz var. ABS dediğiniz anda UDF çalışıyor. Uyumluluğu sağlamak adına bu da iyi olmuş.

Fonksiyonlar :

ABS : Verilen değerin mutlak değerini verir.

select abs(-5) from rdb$database = 5

ACOS : Verilen değerin arc kosinüsünü verir. -1 ile 1 arası değer alıp, 0 ile pi arası sonuç döner.

select acos(0.5) from rdb$database = 1,0471975511966

ASCII_CHAR : Verilen ascii değerin, karakter karşılığını döner. 0 ile 255 arası değer alır.

select ascii_char(65) from rdb$database = 'A'

ASCII_VAL : Verilen karakterin ascii karşılığını verir. Eğer boş string verilirse 0 döndürür.

select ascii_val('A') from rdb$database = 65

ASIN : Verilen değerin arc sinüsünü döner. -1 ile 1 arasında değer alır.

ATAN : Verilen değerin arc tanjantını döner.

ATAN2 : iki parametre alır. ilk sayı/ ikinci sayı'nın arc tanjantını verir.

BIN_AND : Verilen binary değerler için AND operasyonu yapıp, sonucu döndürür.

select bin_and(0,1,0,1) from rdb$database = 0

BIN_OR : Verilen binary değerler için OR operasyonu yapıp, sonucu döndürür.

select bin_or(0,1,0,1) from rdb$database = 1

BIN_SHL : Verilen binary değerde sola öteleme yapar.

BIN_SHR : Verilen binary değerde sağa öteleme yapar.

BIN_XOR : Verilen binary değerler arasında XOR operasyonu yapıp, sonucu döndürür.

select bin_xor(0,1) from rdb$database = 1

BIT_LENGTH : Verilen bit ifadenin uzunluğunu verir.

CEIL (CEILING) : Verilen değerden büyük veya eşit olan ilk tamsayıyı verir. Bu fonksiyonu hem ceil, hem de ceiling olarak çağırabilirsiniz.

select ceil(2.1) from rdb$database = 3 /* 2.1'den büyük ilk tamsayı 3'tür.*/

select ceil(-2.1) from rdb$database = -2 /* -2.1'den büyük ilk tamsayı -2'dir */

CHAR_LENGTH (CHARACTER_LENGTH) : Verilen stringin uzunluğunu döndürür.

select char_length('delphiturkiye') from rdb$database = 13

COALESCE : null olmayan ilk değeri döndürür.

select coalesce(tutar, 0) from tablo_adı = eğer tutar null'den farklı ise tutar alanının değerini, yoksa 0 döndürür.

COS : Verilen değerin kosinüsünü verir.

COSH : Verilen değerin hiperbolik kosinüsünü verir.

COT : Verilen değerin kotanjantını verir.

CURRENT_CONNECTION : O anki bağlantının id'sini verir.

CURRENT_DATE : O anki tarihi döndürür.

select current_date from rdb$database = '21.01.2008' /* 21 Ocakta çalıştırıldı kod */

CURRENT_ROLE : Mevcut Role'ün değerini döndürür. Herhangi bir role tanımlanmamışsa NONE döndürür.

CURRENT_TIME : O anki saati döndürür.

CURRENT_TIMESTAMP : O anki tarih ve saati birlikte döndürür.

CURRENT_TRANSACTION : Geçerli transaction'ın id'sini verir.

CURRENT_USER : Geçerli kullanıcıyı döndürür.

select current_user from rdb$database = 'SYSDBA'

DATEADD : Verilen timestamp değerinden önceki veya sonraki bir günü bulmanızı sağlar.

Kullanımı : DateAdd(timestamp_part, değer, timestamp).

timestamp_part değeri şunlar olabilir : YEAR (yıl), MONTH (ay), DAY (gün), WEEKDAY (hafta), HOUR (saat), MINUTE (dakika), SECOND (saniye), MILLISECOND (milisaniye)

select dateadd(day, 1, current_timestamp) as yarin from rdb$database
select dateadd(day, -1, current_timestamp) as dun from rdb$database
select dateadd(month, 1, current_timestamp) from rdb$database /* bir ay sonrası */

DATEDIFF : Verilen iki timestamp arasında ne kadar fark olduğunu bulmak için kullanılır.

Kullanımı : DateDiff (timestamp_part, ilk tarihsaat, ikinci tarih saat)

select datediff(hour, current_timestamp, current_timestamp+1) from rdb$database = 24
select datediff(minute, current_timestamp, current_timestamp+1) from rdb$database = 1440

DECODE : case-when-else'nin kısa kullanımıdır.

EXP : Verieln sayının exponansiyelini verir. Bu aslında e üssü verilen sayı demek. e bir matematik sabiti, değeri = 2.718281828

select exp(3) from rdb$database = 20,0855369231877

FLOOR : Verilen değerden küçük ilk tamsayıyı verir.

select floor(2.1) from rdb$database = 2
select floor(-2.1) from rdb$database = -3

GEN_UUID : UID (Universal unique number) oluşturmak için kullanılır.

insert into tablo (id) value (gen_uuid());

HASH : Verilen ifadenin HASH değerini döndürür.

select hash('delphiturkiye') from rdb$database = 30051229237846261

IIF : case-when'in kısa kullanımıdır.

Genel kullanımı : IIF(şart, şart doğru ise dönecek değer, şart yanlış ise dönecek değer)

select iif(ders_notu >= 50 , 'Geçti', 'Kaldı') from tablo_adi

LEFT : Verilen string'in sol taraftan itibaren istenilen kadar karakterini geri döner.

select left('delphiturkiye',3) from rdb$database = 'del'

LN : Verilen ifadenin ln değerini verir.

select ln(2) from rdb$database = 0,6931471805599

LOG : Verilen değerin istenilen tabanda logaritmasını almak için kullanılır.

Kullanımı : log(değer, taban)

select log(2,10) from rdb$database = 3,3219280948874

LOG10 : Verilen ifadenin 10'luk tabanda logaritmasını döndürür.

LOWER : Verilen string ifadedeki büyük harfleri, küçük harfe çevirir. Eğer alanınız WIN1254 ve PXW_TURK ise küçük harfe Türkçe olarak çevirir. Yani 'I' yı küçük harfe çevirince 'i' değil, 'ı' yapar.

select lower('MUSTAFA') from rdb$database = 'mustafa'

LPAD : Verilen stringin başına istenilen uzunluğa gelene kadar, başka bir stringi ekler.

select lpad('1', 10, '0') from rdb$database = '0000000001'

MAXVALUE : Verilen değerlerden en büyüğünü döndürür.

select maxvalue(2,10, 88, 3) from rdb$database = 88

MINVALUE : Verilen değerlerden en küçüğünü döndürür.

select minvalue(2,10, 88, 3) from rdb$database = 2

MOD : mod bulmak için kullanılır. mod (65,2) demek, 65'in 2'ye bölümünden kalan değer demektir.

select mod(65,2) from rdb$database = 1

NULLIF : Eğer verilen iki değer eşit ise null döndürür.

update URUN set STOK = NULLIF(STOK,0) /* stok 0 ise null yapar */

OCTET_LENGTH : Verilen 8'li ifadenin uzunluğunu verir.

OVERLAY : Verilen stringin üstüne istenilen karakterinden itibaren istenilen stringi yapıştırır.

select overlay('abcphiturkiye' placing 'del' from 1) from rdb$database = 'delphiturkiye'

PI : Pi sayısını döndürür.

select pi() from rdb$database = 3,1415926535898

POSITION : Verilen string'in, başka bir stringte kaçıncı karakterden itibaren başladığını döndürür. Delphideki Pos gibi çalışır.

select position('tur' in 'delphiturkiye') from rdb$database = 7

POWER : Verilen değerin istenen üssünü döndürmek için kullanılır. Power (2,3) = 2 üssü 3 demektir.

select power(2,3) from rdb$database = 8

RAND : 0 ile 1 arasında rastgele bir sayı üretir.

select floor(rand()*100) from rdb$database /* 0 ile 100 arası rastgele sayı */

RDB$GETCONTEXT : Sistemle alakalı bazı bilgileri almak için kullanılabilir.

Genel Kullanımı : RDB$GetContext('SYSTEM', değişken)

Kullanılabilecek değişkenler :

CLIENT_ADDRESS : Client'ın kullandığı protokole göre ip adresi veya ismi.
CURRENT_USER : Geçerli kullanıcı.
CURRENT_ROLE : Geçerli role.
DB_NAME : Veritabanının tam yolu ve adı.
ENGINE_VERSION : Firebird sürümü.
ISOLATION_LEVEL : Transaction modu.
NETWORK_PROTOCOL : Client'ın kullandığı ağ protokolü.
SESSION_ID : Geçerli session'ın sayısal ID'si.
TRANSACTION_ID : Geçerli transaction'ın sayısal ID'si.

select RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') as veritabani from RDB$DATABASE

REPLACE : Verilen stringteki istenilen ifadeyi değiştirmek için kullanılır.

Kullanımı : Replace (string, aranacak string, değiştirilecek string)

select replace('delphiturkiye', 'tur', 'tür') from rdb$database = 'delphitürkiye'

REVERSE : Verilen string'i ters sıralamada döndürür.

select reverse('delphiturkiye') from rdb$database = 'eyikrutihpled'

RIGHT : Verilen string'in sağdan itibaren istenilen kadarını döndürür.

select right('delphiturkiye', 2) from rdb$database = 'ye'

ROUND : İstenilen değeri, istenilen hassasiyette yuvarlamak için kullanılır.

select round(123.56, 0) from rdb$database = 124
select round(123.56, 1) from rdb$database = 123,60

RPAD : Verilen stringin sonuna istenilen uzunluğa gelene kadar, başka bir stringi ekler.

select rpad('1', 10, '0') from rdb$database = '1000000000'

SIGN : Verilen değerin işaretini döndürür. Pozitif ise 1, sıfır ise 0, negatif ise -1 döner.

select sign(123) from rdb$database = 1

SIN : Verilen değerin sinüsünü döndürür.

SINH : Verilen değerin hiperbolik sinüsünü döndürür.

SQRT : Verilen değerin karekökünü döndürür.

select sqrt(4) from rdb$database = 2

SUBSTRING : Verilen bir string içinden istenilen karakterden itibaren istenilen kadar kısmını almak için kullanılır.

select substring('DelphiTurkiye' from 2 for 3) from rdb$database = 'elp'

TAN : Verilen değerin tanjantını döndürür.

TANH : Verilen değerin hiperbolik tanjantını döndürür.

TARİH SABİTLERİ : NOW (şu anki tarih ve saat), YESTERDAY (dün), TODAY (bugün), TOMORROW (yarın)

select cast('tomorrow' as date) as yarin from rdb$database

TRIM : Bir string'in başındaki (LEADING), sonundaki (TRAILING) ve her iki yanındaki (BOTH) istenen karakterleri silmek için kullanılır. Varsayılan değer her iki yandaki boşlukların (BOTH) silinmesidir.

select trim(' Delphi ') from rdb$database = 'Delphi'
select trim(leading ' ' from ' Delphi ') from rdb$database = 'Delphi '

TRUNC : Verilen değerin istenilen hassasiyette tamsayı kısmını verir.

select trunc(4.67, 0) from rdb$database = 4

UPPER : Verilen stringi büyük harfe çevirir. Eğer alanınız WIN1254 ve PXW_TURK ise büyük harfe Türkçe olarak çevirir.

select upper(adi) from tablo_adi
En son mussimsek tarafından 23 Şub 2008 09:46 tarihinde düzenlendi, toplamda 10 kere düzenlendi.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Güzel bir haber :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

vaktim olmadığından 2 nin yeni özelliklerini inceleyememiştim, çok güzel bir kaynak olmuş. Teşekkürler @mussimsek
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

güzel haber
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Toplayabildiğim tüm fonksiyonların listesini ekledim. Şu an 66 fonksiyon var. Belki gözümden kaçan olabilir. Eklemek veya düzeltmek istedikleriniz varsa belirtirseniz sevinirim.

Ayrıca şu da olsun dediğiniz fonksiyon varsa, eklerseniz Firebird yetkililerine yazarız : )

Kolay gelsin.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Re: Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Mesaj gönderen Ali Erdoğan »

String fonksiyonlarının eklenmesi gerçekten iyi olmuş.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Mesaj gönderen Lost Soul »

ellerinize sağlık hocam.
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Re: Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Mesaj gönderen vampir261 »

Çok teşekkürler :bravo: aydınlatıcı bir makale olmuş :)
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: Firebird 2.1 ile kullanabileceğiniz fonksiyonlar(23.02.2008)

Mesaj gönderen Commandx »

Lazım olacak notlar

Kod: Tümünü seç

Null veya Byte uzunluğu 0 olan kayıtları döndür
QUERY1.SQL.Add(' select * From KAYITLARTABLOSU Where (KOLONADI IS NULL OR CHAR_LENGTH(KOLONADI)= 0)');

// String ALanlar İçin Nokta virgül Değişimi SQL Update
update TABLO SET KOLON= (replace(TABLO.KOLON, '.', ',')) ; 

// null alan doldurmaca, dolu alan passed
update TABLO set TABLO.GUNCELLEME_TAR = current_timestamp WHERE  (TABLO.GUNCELLEME_TAR IS NULL) ; 

---------------------------------------------------

-- Artan Sıra Numarası verme (Primary key üzerinden Jeneratör Oluşturulmuş ise Create Generator) Before İnsert
if (new.new_field is null) then
  new.new_field = gen_id(gen_TABLO_ID,1);
end

-- String birleştirmede (Örn AD SOYAD birleştirme) Triger ile (Before_ insert+update Trig) 
if (inserting or (updating) ) then begin
new.adsoyad= (new.ad ||' '||  new.soyad);
NEW.tarih= current_date; -- yeni eklenen veya güncellenen kaydın en son değiştiği tarih
NEW.tarih= current_timestamp ; (Alanınız Timestamp ise ) bu daha iyi
end

-- Birden fazla Alan üzerinde Aritmetik İşlem yapma (Before_insert+update Trig) 
if (inserting or (updating) ) then begin
NEW.total = (NEW.ABC + NEW.DEF + NEW.GHI);
END

-- İban  update post ettiğimizde  i-banın sondan 17 karakterini hesap no sütununa yazar (Before_insert+update Trig)
if (inserting or (updating) ) then begin
NEW.hesapno=substring(NEW.iban from 10 for 18);
END

--  İlgili Kaydı en son Hangi IP Eklemiş/Güncellemiş (Before_insert or update Triggerinde)
if (inserting or (updating) ) then begin
NEW.REMOTE_IP=RDB$GetContext('SYSTEM','CLIENT_ADDRESS') ;
end

-- Adı İlk Harfi BÜYÜK Sonrakileri Küçük ve Soyadı Kolonunu olduğu gibi BÜYÜK Örn (Ahmet KARACA) gibi
-- ADI,SOYADI, ADSOYADLOWER Adında Kolonlarımız ve uzunlukları varchar(40) olsun
-- Şöyle işliyor = -- Ad , Soyad Kolonunda boşluk varsa kırpılır ADI kolonundaki ilk karakter büyük seçilir gerisi alınmaz. 
-- Bu sefer ADI kolonundaki verinin ikinci ve sonraki karakterler küçüğe çevrilir ilk karakter alınmaz ve sonra birleştirilir.
-- Sonrasında boşluk ile soyadı birleştirilip ADSOYADLOWER kolonuna yazılır. 
-- Trim ile de desteklenirse  (denenecek) => (DENENDİ = Before Insert or Update Trigger )
if (inserting or (updating) ) then begin
NEW.adi = TRIM(NEW.ADI);
NEW.soyadi = TRIM(NEW.soyadi);
NEW.adsoyadlower = (UPPER(SUBSTRING(NEW.adi FROM 1 FOR 1)))||''||(LOWER(SUBSTRING(NEW.adi FROM 2 FOR 40)))||' '||NEW.soyadi;
end;
// 3 Kelimelik ad soyad da durum alttaki gibidir 
örn Necip fazıl KISAKÜREK 
//--------------------------------------------------------------------------------------------------------
-- NOTLAR (DETAY) TABLOSU -> OGRENCI_TABLOSU (MASTER) Üzerinde Şartlar oluştuktan sonra AFTER_İnsert+update Triggeri üzerinde çalışıyor
-- Masterin HARFNOTU sütununu ID=new.ID den referans alarak OGRENCI tablosunun Harfnotu Sütununu güncelliyor. (Triger NOTLAR Tablosunundur)
  if (NEW.NOTLAR BETWEEN 90 and 100 ) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='AA' WHERE ID =NEW.ID;
 END
 ELSE if (NEW.NOTLAR BETWEEN 85 and 89) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='BA' WHERE ID =NEW.ID;
 END
 ELSE if (NEW.NOTLAR BETWEEN 80 and 84) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='BB' WHERE ID =NEW.ID;
 END
 ELSE if (NEW.NOTLAR BETWEEN 75 and 79) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='CB' WHERE ID =NEW.ID;
 END
 ELSE if (NEW.NOTLAR BETWEEN 65 and 74) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='CC' WHERE ID =NEW.ID;
 END
 ELSE if (NEW.NOTLAR BETWEEN 58 and 64) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='DC' WHERE ID =NEW.ID;
 END
   ELSE if (NEW.NOTLAR BETWEEN 50 and 57) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='DD' WHERE ID =NEW.ID;
 END
   ELSE if (NEW.NOTLAR BETWEEN 40 and 49) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='FD' WHERE ID =NEW.ID;
 END
   ELSE if (NEW.NOTLAR BETWEEN 0 and 39) then BEGIN
 update OGRENCI_TABLOSU SET HARFNOTU ='FF' WHERE ID =NEW.ID;
 END
//-------------------------------------------------------------------------
AS
declare variable aylar varchar(10);
begin
aylar ='';
NEW.DTARYIL=  EXTRACT(YEAR FROM NEW.DTAR)  ; -- substring(NEW.DTAR from 1 for 4); -- 2.ALTERN. DOĞ TARİHİNİN YILINI YAZ (İNTEGER - STRİNG)

--AYLAR=SUBSTRING(NEW.DTAR FROM 6 FOR 2); -- YILIN AYINI BUL VE STRİNGE ÇEVİR (BU DA OLUR FAKAT GLOBAL DEĞİL)
AYLAR =  extract(MONTH FROM NEW.DTAR)  ;    -- (BU GLOBALDİR TARİH FORMATI NE OLURSA OLSUN AYI ÇEKER ALIR)
if (AYLAR = '01' or AYLAR = '1') then begin NEW.DTARAY='OCAK'; END
if (AYLAR = '02' or AYLAR = '2') then begin NEW.DTARAY='ŞUBAT';END
if (AYLAR = '03' or AYLAR = '3') then begin NEW.DTARAY='MART'; END
if (AYLAR = '04' or AYLAR = '4') then begin NEW.DTARAY='NİSAN';END
if (AYLAR = '05' or AYLAR = '5') then begin NEW.DTARAY='MAYIS';END
if (AYLAR = '06' or AYLAR = '6') then begin NEW.DTARAY='HAZİRAN';END
if (AYLAR = '07' or AYLAR = '7') then begin NEW.DTARAY='TEMMUZ';END
if (AYLAR = '08' or AYLAR = '8') then begin NEW.DTARAY='AĞUSTOS';END
if (AYLAR = '09' or AYLAR = '9') then begin NEW.DTARAY='EYLÜL';END
if (AYLAR = '10') then begin NEW.DTARAY='EKİM';END 
if (AYLAR = '11') then begin NEW.DTARAY='KASIM';END 
if (AYLAR = '12') then begin NEW.DTARAY='ARALIK';END 
end

//-------------- Yaş Hesaplama = 15 - 20 Gün Fark olabilir (SADECE YIL OLARAK)------------
--Şubat ayları artık yıl azizliğinden dolayı 4 yılda bir gün hata oluşmaktadır
AS
declare variable YASLAR varchar(3);
begin
YASLAR='';
YASLAR = (datediff(day,cast(NEW.dog_tar as date),cast(NEW.olum_tar as date))/365);
NEW.yas_rakam=YASLAR; - - yaş yaklaşıktır
END

-------
Versiyon bilgisi
SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') as version from rdb$database

1 tabloda olup 2. tabloda olmayan kayıt
select TCNO from TABLO1 where not TCNO in (select TCNO from TABLO2)

-------AY ADLARINI RAKAMSAL AYLARA ÇEVİRME OCAK =01 AY GİBİ--------
AS
begin
if (inserting or (updating) ) then begin
if (NEW.AY = 'OCAK') then begin NEW.YIL_AX='01'||'.'||'01'||'.'||NEW.YIL; END
if (NEW.AY = 'ŞUBAT') then begin NEW.YIL_AX='01'||'.'||'02'||'.'||NEW.YIL; END
if (NEW.AY = 'MART') then begin NEW.YIL_AX='01'||'.'||'03'||'.'||NEW.YIL; END
if (NEW.AY = 'NİSAN') then begin NEW.YIL_AX='01'||'.'||'04'||'.'||NEW.YIL; END
if (NEW.AY = 'MAYIS') then begin NEW.YIL_AX='01'||'.'||'05'||'.'||NEW.YIL; END
if (NEW.AY = 'HAZİRAN') then begin NEW.YIL_AX='01'||'.'||'06'||'.'||NEW.YIL; END
if (NEW.AY = 'TEMMUZ') then begin NEW.YIL_AX='01'||'.'||'07'||'.'||NEW.YIL; END
if (NEW.AY = 'AĞUSTOS') then begin NEW.YIL_AX='01'||'.'||'08'||'.'||NEW.YIL; END
if (NEW.AY = 'EYLÜL') then begin NEW.YIL_AX='01'||'.'||'09'||'.'||NEW.YIL; END
if (NEW.AY = 'EKİM') then begin NEW.YIL_AX='01'||'.'||'10'||'.'||NEW.YIL; END
if (NEW.AY = 'KASIM') then begin NEW.YIL_AX='01'||'.'||'11'||'.'||NEW.YIL; END
if (NEW.AY = 'ARALIK') then begin NEW.YIL_AX='01'||'.'||'12'||'.'||NEW.YIL; END
if (NEW.AY = '') then begin NEW.YIL_AX='01'||'.'||'12'||'.'||'2145'; END

END
end

Doğum Günü Bu gün Olanları SQL ile Listeleme

  SELECT * FROM KAYITLAR  WHERE

  (EXTRACT(DAY FROM DTAR) BETWEEN      EXTRACT(DAY FROM current_date)    AND    EXTRACT(DAY FROM current_date)   )
  AND
  (EXTRACT(MONTH FROM DTAR) BETWEEN    EXTRACT(MONTH FROM current_date)    AND    EXTRACT(MONTH FROM current_date)  )
//-----------------------
SELECT TCKIMLIK,ADISOYADI,iif(SGK_SICIL IS NULL , '0', SGK_SICIL) FROM KAYITLAR ;// SGK_SICIL no alanını null "boş" ise 0 yap


http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Cevapla