Gönderen Konu: Firebird 2.1 ile kullanabileceğiniz fonksiyonlar  (Okunma sayısı 19579 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Morphosis

  • Üye
  • **
  • İleti: 74
Firebird 2.1 ile kullanabileceğiniz fonksiyonlar
« : 06 Haziran 2008, 11:08:11 öö »
Merhaba,

Makalenin pdf hali : http://www.delphiturkiye.com/dsplus/m.php?p=Fonksiyonlar.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
« Son Düzenleme: 06 Haziran 2008, 11:14:07 öö Gönderen: Morphosis »