Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

IBSurgeon kütüphanesi

Yerleşik Firebird 3.0 işlevleri (SDF, yani Sunucu Tanımlı İşlevler)

Aşağıda aşağıdaki yerleşik işlevler (DECODE hariç) yalnızca aynı ada sahip bir

UDF bildirilmemişse kullanılır.

UDF veya sistem işlevi arasındaki bu seçim, ifade derlenirken kararlaştırılır

ve ifade saklanmışsa (tetikleyici / SP) değiştirilmez.

Yazarlar:

Adriano dos Santos Fernandes <[email protected]>

Oleg Loa <[email protected]>

Alexey Karyakin <[email protected]>

Claudio Valderrama C. <cvalde at usa.net>

---

ABS

---

İşlev:

Bir sayının mutlak değerini döndürür.

Biçim:

ABS( <sayı> )

Örnek:

select abs(amount) from transactions;

----

ACOS

----

İşlev:

Bir sayının ark kosinüsünü döndürür.

Biçim:

ACOS( <sayı> )

Notlar:

ACOS argümanı -1 ile 1 aralığında olmalıdır ve 0 ile PI aralığında bir değer döndürür.

Örnek:

select acos(x) from y;

---–

ACOSH

---–

İşlev:

Bir sayının hiperbolik ark kosinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

ACOSH( <sayı> )

Örnek:

select acosh(x) from y;

---——-

ASCII_CHAR

---——-

İşlev:

Belirtilen koda sahip ASCII karakterini döndürür.

Biçim:

ASCII\_CHAR( <sayı> )

Notlar:

ASCII\_CHAR argümanı 0 ile 255 aralığında olmalıdır ve NONE karakter setine sahip bir değer döndürür.

Örnek:

select ascii\_char(x) from y;

---——

ASCII_VAL

---——

İşlev:

Belirtilen dizenin ilk karakterinin ASCII kodunu döndürür.

Biçim:

ASCII\_VAL( <dize> )

Notlar:

1) Dize boşsa 0 döndürür.

2) İlk karakter çok baytlıysa hata verir.

Örnek:

select ascii\_val(x) from y;

----

ASIN

----

İşlev:

Bir sayının ark sinüsünü döndürür.

Biçim:

ASIN( <sayı> )

Notlar:

ASIN argümanı -1 ile 1 aralığında olmalıdır ve -PI / 2 ile PI / 2 aralığında bir değer döndürür.

Örnek:

select asin(x) from y;

---–

ASINH

---–

İşlev:

Bir sayının hiperbolik ark sinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

ASINH( <sayı> )

Örnek:

select asinh(x) from y;

----

ATAN

----

İşlev:

Bir sayının ark tanjantını döndürür.

Biçim:

ATAN( <sayı> )

Notlar:

-PI / 2 ile PI / 2 aralığında bir değer döndürür.

Örnek:

select atan(x) from y;

---–

ATAN2

---–

İşlev:

İlk sayının / ikinci sayının ark tanjantını döndürür.

Biçim:

ATAN( <sayı>, <sayı> )

Notlar:

-PI ile PI aralığında bir değer döndürür.

Örnek:

select atan2(x, y) from z;

---–

ATANH

---–

İşlev:

Bir sayının hiperbolik ark tanjantını döndürür (radyan cinsinden ifade edilir).

Biçim:

ATANH( <sayı> )

Örnek:

select atanh(x) from y;

---—-

BIN_AND

---—-

İşlev:

Tüm argümanlar üzerinde gerçekleştirilen ikili AND işleminin sonucunu döndürür.

Biçim:

BIN\_AND( <sayı>, <sayı> \[, <sayı> ...\] )

Örnek:

select bin\_and(flags, 1) from x;

---—-

BIN_NOT

---—-

İşlev:

Argümanı üzerinde gerçekleştirilen bit düzeyinde NOT işleminin sonucunu döndürür.

Biçim:

BIN\_NOT( <sayı> )

Örnek:

select bin\_not(flags) from x;

---—

BIN_OR

---—

İşlev:

Tüm argümanlar üzerinde gerçekleştirilen ikili OR işleminin sonucunu döndürür.

Biçim:

BIN\_OR( <sayı>, <sayı> \[, <sayı> ...\] )

Örnek:

select bin\_or(flags1, flags2) from x;

---—-

BIN_SHL

---—-

İşlev:

Argümanlar üzerinde gerçekleştirilen ikili sola kaydırma işleminin sonucunu döndürür (birinci << ikinci).

Biçim:

BIN\_SHL( <sayı>, <sayı> )

Örnek:

select bin\_shl(flags1, 1) from x;

---—-

BIN_SHR

---—-

İşlev:

Argümanlar üzerinde gerçekleştirilen ikili sağa kaydırma işleminin sonucunu döndürür (birinci >> ikinci).

Biçim:

BIN\_SHR( <sayı>, <sayı> )

Örnek:

select bin\_shr(flags1, 1) from x;

---—-

BIN_XOR

---—-

İşlev:

Tüm argümanlar üzerinde gerçekleştirilen ikili XOR işleminin sonucunu döndürür.

Biçim:

BIN\_XOR( <sayı>, <sayı> \[, <sayı> ...\] )

Örnek:

select bin\_xor(flags1, flags2) from x;

---———–

CEIL | CEILING

---———–

İşlev:

Giriş argümanından büyük veya ona eşit olan en küçük tam sayıyı temsil eden bir değer döndürür.

Biçim:

{ CEIL \| CEILING }( <sayı> )

Örnek:

1) select ceil(val) from x;

2) select ceil(2.1), ceil(-2.1) from rdb$database;  -- 3, -2 döndürür

---———

CHAR_TO_UUID

---———

İşlev:

Bir UUID'nin CHAR(32) ASCII gösterimini (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) CHAR(16) OCTETS

gösterimine dönüştürür (depolama için optimize edilmiştir).

Biçim:

CHAR\_TO\_UUID( <dize> )

Önemli (büyük endian sunucular için):

Firebird 2.5.2'den önce, CHAR\_TO\_UUID ve UUID\_TO\_CHAR'ın büyük endian sunucularda hatalı

çalıştığı keşfedilmiştir. Bu makinelerde, dönüştürme sırasında baytlar/karakterler takas edilir ve

yanlış konumlara gider. Bu hata 2.5.2 ve 3.0'da düzeltildi, ancak bu, bu işlevlerin artık (aynı giriş parametresi için) eskisinden farklı değerler döndürdüğü anlamına gelir.

Örnek:

select char\_to\_uuid('93519227-8D50-4E47-81AA-8F6678C096A1') from rdb$database;

Ayrıca bakınız: GEN_UUID ve UUID_TO_CHAR

---

COS

---

İşlev:

Bir açının kosinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

COS( <sayı> )

Notlar:

Açı radyan cinsinden belirtilir ve -1 ile 1 aralığında bir değer döndürür.

Örnek:

select cos(x) from y;

----

COSH

----

İşlev:

Bir açının hiperbolik kosinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

COSH( <sayı> )

Örnek:

select cosh(x) from y;

---

COT

---

İşlev:

1 / tan(argüman) değerini döndürür.

Biçim:

COT( <sayı> )

Örnek:

select cot(x) from y;

---—-

DATEADD

---—-

İşlev:

Belirtilen zaman miktarı kadar artırılmış (veya negatifse azaltılmış) bir tarih/saat/zaman damgası değeri döndürür.

Biçim:

DATEADD( <sayı> <zaman\_parçası> TO <tarih\_saat> )

DATEADD( <zaman\_parçası>, <sayı>, <tarih\_saat> )

zaman\_parçası ::= { YEAR \| MONTH \| DAY \| WEEK \| HOUR \| MINUTE \| SECOND \| MILLISECOND }

Notlar:

1) WEEKDAY ve YEARDAY kullanılamaz. Mantıklı değildir.

2) YEAR, MONTH ve DAY, saat değerleriyle kullanılamaz.

3) Tüm zaman\_parçası değerleri, zaman damgası değerleriyle kullanılabilir.

4) DATEADD ve tarihler için saat, dakika, saniye ve milisaniye kullanıldığında, eklenen veya

    çıkarılan miktar, bir etki yaratmak için en az bir günü hesaba katmalıdır (yani bir tarihe 23 saat eklemek onu artırmaz).

Örnek:

select dateadd(-1 day to current\_date) as yesterday

    from rdb$database;

---—–

DATEDIFF

---—–

İşlev:

İlk tarih/saat/zaman damgası değerinden ikinciye kadar geçen süreyi temsil eden tam sayısal bir değer döndürür.

Biçim:

DATEDIFF( <zaman\_parçası> FROM <tarih\_saat> TO <tarih\_saat> )

DATEDIFF( <zaman\_parçası>, <tarih\_saat>, <tarih\_saat> )

zaman\_parçası ::= { YEAR \| MONTH \| DAY \| WEEK \| HOUR \| MINUTE \| SECOND \| MILLISECOND }

Notlar:

1) İkinci değer birinciden büyükse pozitif değer döndürür,

   birinci daha büyükse negatif veya eşitlerse sıfır döndürür.

2) Tarihin saat değerleriyle karşılaştırılması geçersizdir.

3) WEEKDAY ve YEARDAY kullanılamaz. Mantıklı değildir.

4) YEAR, MONTH ve DAY, saat değerleriyle kullanılamaz.

5) Tüm zaman\_parçası değerleri, zaman damgası değerleriyle kullanılabilir.

Örnek:

select datediff(week from cast('yesterday' as timestamp) - 7 to current\_timestamp)

    from rdb$database;

---—

DECODE

---—

İşlev:

DECODE, CASE ... WHEN ... ELSE ifadesi için bir kısayoldur.

Biçim:

DECODE( <ifade>, <ara>, <sonuç> \[ , <ara>, <sonuç> ... \] \[, <varsayılan> \]

Örnek:

select decode(state, 0, 'deleted', 1, 'active', 'unknown') from things;

---

EXP

---

İşlev:

Argümana göre üstel e değerini döndürür.

Biçim:

EXP( <sayı> )

Örnek:

select exp(x) from y;

---–

FLOOR

---–

İşlev:

Giriş argümanından küçük veya ona eşit olan en büyük tam sayıyı temsil eden bir değer döndürür.

Biçim:

FLOOR( <sayı> )

Örnek:

1) select floor(val) from x;

2) select floor(2.1), floor(-2.1) from rdb$database;  -- 2, -3 döndürür

---—–

GEN_UUID

---—–

İşlev:

CHAR(16) OCTETS türünde evrensel benzersiz bir sayı döndürür.

Biçim:

GEN\_UUID()

Önemli:

Firebird 2.5.2'den önce, GEN\_UUID tamamen rastgele dizeler döndürüyordu. Bu, RFC-4122 (UUID spesifikasyonu) ile uyumlu değildir.

Bu, Firebird 2.5.2 ve 3.0'da düzeltildi. Artık GEN\_UUID, bazı bitlerin ayrıldığı ve diğerlerinin rastgele olduğu uyumlu bir UUID sürüm 4 dizesi döndürür. Uyumlu bir UUID'nin dize biçimi XXXXXXXX-XXXX-4XXX-YXXX-XXXXXXXXXXXX şeklindedir; burada 4 sabittir (sürüm) ve Y, 8, 9, A veya B'dir.

Örnek:

insert into records (id) value (gen\_uuid());

Ayrıca bakınız: CHAR_TO_UUID ve UUID_TO_CHAR

----

HASH

----

İşlev:

Bir dizenin HASH değerini döndürür.

Biçim:

HASH( <dize> )

Örnek:

select hash(x) from y;

----

LEFT

----

İşlev:

Bir dizenin başında görünen, belirtilen uzunluktaki alt dizeyi döndürür.

Biçim:

LEFT( <dize>, <sayı> )

Örnek:

select left(name, char\_length(name) - 10)

    from people

    where name like '% FERNANDES';

LN

İşlev:

Bir sayının doğal logaritmasını döndürür.

Biçim:

LN( <sayı> )

Örnek:

select ln(x) from y;

---

LOG

---

İşlev:

LOG(x, y), y'nin x tabanındaki logaritmasını döndürür.

Biçim:

LOG( <sayı>, <sayı> )

Örnek:

select log(x, 10) from y;

---–

LOG10

---–

İşlev:

Bir sayının on tabanındaki logaritmasını döndürür.

Biçim:

LOG10( <sayı> )

Örnek:

select log10(x) from y;

----

LPAD

----

İşlev:

LPAD(string1, length, string2), sonuç dizesinin uzunluğu length değerine eşit olana kadar string2'yi string1'in başına ekler.

Biçim:

LPAD( <dize>, <sayı> \[, <dize> \] )

Notlar:

1) İkinci dize atlanırsa varsayılan değer bir boşluktur.

2) Sonuç dizesi length değerinden büyük olacağında ikinci dize kısaltılır.

3) İlk dizenin uzunluğu length parametresinden büyükse ilk dize kısaltılır.

Örnek:

select lpad(x, 10) from y;

---—–

MAXVALUE

---—–

İşlev:

Bir değer listesinin maksimum değerini döndürür.

Biçim:

MAXVALUE( <değer> \[, <değer> ...\] )

Örnek:

select maxvalue(v1, v2, 10) from x;

---—–

MINVALUE

---—–

İşlev:

Bir değer listesinin minimum değerini döndürür.

Biçim:

MINVALUE( <değer> \[, <değer> ...\] )

Örnek:

select minvalue(v1, v2, 10) from x;

---

MOD

---

İşlev:

MOD(X, Y), X'in Y'ye bölümünden kalan kısmı döndürür.

Biçim:

MOD( <sayı>, <sayı> )

Örnek:

select mod(x, 10) from y;

---—-

OVERLAY

---—-

İşlev:

OVERLAY( <dize1> PLACING <dize2> FROM <başlangıç> \[ FOR <uzunluk> \] ),

dize1 içindeki FROM başlangıç FOR uzunluk alt dizesini dize2 ile değiştirerek döndürür.

Biçim:

OVERLAY( <dize> PLACING <dize> FROM <sayı> \[ FOR <sayı> \] )

Notlar:

1) <uzunluk> belirtilmezse, CHAR\_LENGTH( <dize2> ) varsayılır.

2) OVERLAY işlevi şuna eşdeğerdir:

       SUBSTRING(<dize1> FROM 1 FOR <başlangıç> - 1) \|\|

       <dize2> \|\|

       SUBSTRING(<dize1> FROM <başlangıç> + <uzunluk>)

PI

İşlev:

PI sabitini döndürür (3.1459...).

Biçim:

PI()

Örnek:

val = PI();

---—–

POSITION

---—–

İşlev:

İlk dizenin ikinci dize içindeki konumunu döndürür, başlangıç

bir ofset (veya atlandığında baştan itibaren). Bulunamadığında 0 döner.

Biçim:

POSITION( <string> IN <string> )

POSITION( <string>, <string> \[, <number> \] )

Örnek:

select rdb$relation\_name

    from rdb$relations

    where position('RDB$' IN rdb$relation\_name) = 1;

---–

POWER

---–

İşlev:

POWER(X, Y), X'in Y kuvvetini döndürür.

Biçim:

POWER( <number>, <number> )

Örnek:

select power(x, 10) from y;

----

RAND

----

İşlev:

0 ile 1 arasında rastgele bir sayı döndürür.

Biçim:

RAND()

Örnek:

select \* from x order by rand();

---—-

REPLACE

---—-

İşlev:

REPLACE(searched, find, replacement), "searched" içindeki tüm "find" geçişlerini

"replacement" ile değiştirir.

Biçim:

REPLACE( <string>, <string>, <string> )

Örnek:

select replace(x, ' ', ',') from y;

---—-

REVERSE

---—-

İşlev:

Bir dizgiyi ters sırada döndürür.

Biçim:

REVERSE( <value> )

Notlar:

REVERSE, dizgileri sağdan sola indekslemek için kullanışlı bir işlevdir.

Örnek:

create index people\_email on people computed by (reverse(email));

select \* from people where reverse(email) starting with reverse('.br');

---–

RIGHT

---–

İşlev:

RIGHT(string, length)

Bir dizginin sonunda görünen belirtilen uzunluktaki alt dizgiyi döndürür.

Biçim:

RIGHT( <string>, <number> )

Örnek:

select right(rdb$relation\_name, char\_length(rdb$relation\_name) - 4)

    from rdb$relations

    where rdb$relation\_name like 'RDB$%';

---–

ROUND

---–

İşlev:

ROUND(number, scale)

Belirtilen ölçeğe yuvarlanmış bir sayı döndürür.

Biçim:

ROUND( <number> \[, <number> \] )

Notlar:

Ölçek (ikinci parametre) negatifse, değerin tam sayı kısmı

yuvarlanır. Örn: ROUND(123.456, -1) 120.000 döndürür.

Örnekler:

select round(salary \* 1.1, 0) from people;

----

RPAD

----

İşlev:

RPAD(string1, length, string2), string2'yi string1'in sonuna ekler;

sonuç dizgisinin uzunluğu length değerine eşit olana kadar.

Biçim:

RPAD( <string>, <number> \[, <string> \] )

Notlar:

1) İkinci dizgi atlanırsa varsayılan değer bir boşluktur.

2) Sonuç dizgisi length değerinden büyük olacağında ikinci dizgi kısaltılır.

3) İlk dizginin uzunluğu length parametresinden büyükse ilk dizgi kısaltılır.

Örnek:

select rpad(x, 10) from y;

----

SIGN

----

İşlev:

Girdi değerinin pozitif, sıfır veya negatif olmasına bağlı olarak sırasıyla 1, 0 veya -1 döndürür.

Biçim:

SIGN( <number> )

Örnek:

select sign(x) from y;

---

SIN

---

İşlev:

Bir açının sinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

SIN( <number> )

Notlar:

SIN argümanı radyan cinsinden belirtilmelidir.

Örnek:

select sin(x) from y;

----

SINH

----

İşlev:

Bir açının hiperbolik sinüsünü döndürür (radyan cinsinden ifade edilir).

Biçim:

SINH( <number> )

Örnek:

select sinh(x) from y;

----

SQRT

----

İşlev:

Bir sayının karekökünü döndürür.

Biçim:

SQRT( <number> )

Örnek:

select sqrt(x) from y;

---

TAN

---

İşlev:

Bir açının tanjantını döndürür (radyan cinsinden ifade edilir).

Biçim:

TAN( <number> )

Notlar:

TAN argümanı radyan cinsinden belirtilmelidir.

Örnek:

select tan(x) from y;

----

TANH

----

İşlev:

Bir açının hiperbolik tanjantını döndürür (radyan cinsinden ifade edilir).

Biçim:

TANH( <number> )

Örnek:

select tanh(x) from y;

---–

TRUNC

---–

İşlev:

TRUNC(number, scale)

Bir sayının (belirtilen ölçeğe kadar) tam sayı kısmını döndürür.

Biçim:

TRUNC( <number> \[, <number> \] )

Notlar:

Ölçek (ikinci parametre) negatifse, değerin tam sayı kısmı

kısaltılır. Örn: TRUNC(123.456, -1) 120.000 döndürür.

Örnek:

1) select trunc(x) from y;

2) select trunc(-2.8), trunc(2.8) from rdb$database;  -- -2, 2 döndürür

3) select trunc(987.65, 1), trunc(987.65, -1) from rdb$database;  -- 987.60, 980.00 döndürür

---———

UUID_TO_CHAR

---———

İşlev:

GEN\_UUID tarafından döndürülen CHAR(16) OCTETS UUID'yi

CHAR(32) ASCII gösterimine (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) dönüştürür.

Biçim:

UUID\_TO\_CHAR( <string> )

Önemli (big-endian sunucular için):

Firebird 2.5.2'den önce, CHAR\_TO\_UUID ve UUID\_TO\_CHAR'ın big-endian sunucularda

yanlış çalıştığı keşfedilmiştir. Bu makinelerde, baytlar/karakterler takas edilir ve

dönüştürme sırasında yanlış konumlara gider. Bu hata 2.5.2 ve 3.0'da düzeltildi, ancak bu,

bu işlevlerin artık (aynı girdi parametresi için) eskisinden farklı değerler döndürdüğü anlamına gelir.

Örnek:

select uuid\_to\_char(gen\_uuid()) from rdb$database;

Ayrıca bakınız: GEN_UUID ve CHAR_TO_UUID