Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Ugrađene funkcije Firebird 3.0 (SDF, tj. funkcije definisane na serveru)

Funkcije ugrađene u nastavku (osim DECODE) koriste se samo ako ne postoji

UDF deklarisan sa istim imenom.

Ovaj izbor između UDF-a ili sistemske funkcije donosi se prilikom kompajliranja

naredbe i ne menja se ako se naredba sačuva (trigger / SP).

Autori:

Adriano dos Santos Fernandes <[email protected]>

Oleg Loa <[email protected]>

Alexey Karyakin <[email protected]>

Claudio Valderrama C. <cvalde at usa.net>

---

ABS

---

Funkcija:

Vraća apsolutnu vrednost broja.

Format:

ABS( <number> )

Primer:

select abs(amount) from transactions;

----

ACOS

----

Funkcija:

Vraća ark kosinus broja.

Format:

ACOS( <number> )

Napomene:

Argument za ACOS mora biti u opsegu od -1 do 1 i vraća vrednost u

opsegu od 0 do PI.

Primer:

select acos(x) from y;

---–

ACOSH

---–

Funkcija:

Vraća hiperbolički ark kosinus broja (izražen u radijanima).

Format:

ACOSH( <number> )

Primer:

select acosh(x) from y;

---——-

ASCII_CHAR

---——-

Funkcija:

Vraća ASCII karakter sa navedenim kodom.

Format:

ASCII\_CHAR( <number> )

Napomene:

Argument za ASCII\_CHAR mora biti u opsegu od 0 do 255 i vraća vrednost

sa NONE skupom karaktera.

Primer:

select ascii\_char(x) from y;

---——

ASCII_VAL

---——

Funkcija:

Vraća ASCII kod prvog karaktera navedenog stringa.

Format:

ASCII\_VAL( <string> )

Napomene:

1) Vraća 0 ako je string prazan.

2) Baca grešku ako je prvi karakter višebajtni.

Primer:

select ascii\_val(x) from y;

----

ASIN

----

Funkcija:

Vraća ark sinus broja.

Format:

ASIN( <number> )

Napomene:

Argument za ASIN mora biti u opsegu od -1 do 1 i vraća vrednost u

opsegu od -PI / 2 do PI / 2.

Primer:

select asin(x) from y;

---–

ASINH

---–

Funkcija:

Vraća hiperbolički ark sinus broja (izražen u radijanima).

Format:

ASINH( <number> )

Primer:

select asinh(x) from y;

----

ATAN

----

Funkcija:

Vraća ark tangens broja.

Format:

ATAN( <number> )

Napomene:

Vraća vrednost u opsegu od -PI / 2 do PI / 2.

Primer:

select atan(x) from y;

---–

ATAN2

---–

Funkcija:

Vraća ark tangens prvog broja / drugog broja.

Format:

ATAN( <number>, <number> )

Napomene:

Vraća vrednost u opsegu od -PI do PI.

Primer:

select atan2(x, y) from z;

---–

ATANH

---–

Funkcija:

Vraća hiperbolički ark tangens broja (izražen u radijanima).

Format:

ATANH( <number> )

Primer:

select atanh(x) from y;

---—-

BIN_AND

---—-

Funkcija:

Vraća rezultat binarne AND operacije izvršene nad svim argumentima.

Format:

BIN\_AND( <number>, <number> \[, <number> ...\] )

Primer:

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

---—-

BIN_NOT

---—-

Funkcija:

Vraća rezultat bitovne NOT operacije izvršene nad njenim argumentom.

Format:

BIN\_NOT( <number> )

Primer:

select bin\_not(flags) from x;

---—

BIN_OR

---—

Funkcija:

Vraća rezultat binarne OR operacije izvršene nad svim argumentima.

Format:

BIN\_OR( <number>, <number> \[, <number> ...\] )

Primer:

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

---—-

BIN_SHL

---—-

Funkcija:

Vraća rezultat binarne operacije pomeranja ulevo izvršene nad argumentima (prvi << drugi).

Format:

BIN\_SHL( <number>, <number> )

Primer:

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

---—-

BIN_SHR

---—-

Funkcija:

Vraća rezultat binarne operacije pomeranja udesno izvršene nad argumentima (prvi >> drugi).

Format:

BIN\_SHR( <number>, <number> )

Primer:

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

---—-

BIN_XOR

---—-

Funkcija:

Vraća rezultat binarne XOR operacije izvršene nad svim argumentima.

Format:

BIN\_XOR( <number>, <number> \[, <number> ...\] )

Primer:

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

---———–

CEIL | CEILING

---———–

Funkcija:

Vraća vrednost koja predstavlja najmanji ceo broj koji je veći

ili jednak ulaznom argumentu.

Format:

{ CEIL \| CEILING }( <number> )

Primer:

1) select ceil(val) from x;

2) select ceil(2.1), ceil(-2.1) from rdb$database;  -- returns 3, -2

---———

CHAR_TO_UUID

---———

Funkcija:

Konvertuje CHAR(32) ASCII reprezentaciju UUID-a

(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) u CHAR(16) OCTETS

reprezentaciju (optimizovanu za skladištenje).

Format:

CHAR\_TO\_UUID( <string> )

Važno (za big-endian servere):

Otkriveno je da pre Firebird 2.5.2, CHAR\_TO\_UUID i UUID\_TO\_CHAR rade

nepravilno na big-endian serverima. Na tim mašinama, bajtovi/karakteri se zamjenjuju i idu na

pogrešne pozicije prilikom konverzije. Ovaj bug je ispravljen u 2.5.2 i 3.0, ali to znači da ove

funkcije sada vraćaju različite vrednosti (za isti ulazni parametar) nego pre.

Primer:

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

Vidi takođe: GEN_UUID i UUID_TO_CHAR

---

COS

---

Funkcija:

Vraća kosinus ugla (izraženog u radijanima).

Format:

COS( <number> )

Napomene:

Ugao je naveden u radijanima i vraća vrednost u opsegu od -1 do 1.

Primer:

select cos(x) from y;

----

COSH

----

Funkcija:

Vraća hiperbolički kosinus ugla (izraženog u radijanima).

Format:

COSH( <number> )

Primer:

select cosh(x) from y;

---

COT

---

Funkcija:

Vraća 1 / tan(argument).

Format:

COT( <number> )

Primer:

select cot(x) from y;

---—-

DATEADD

---—-

Funkcija:

Vraća vrednost datuma/vremena/timestamp-a uvećanu (ili umanjenu, kada je negativna)

za navedenu količinu vremena.

Format:

DATEADD( <number> <timestamp\_part> TO <date\_time> )

DATEADD( <timestamp\_part>, <number>, <date\_time> )

timestamp\_part ::= { YEAR \| MONTH \| DAY \| WEEK \| HOUR \| MINUTE \| SECOND \| MILLISECOND }

Napomene:

1) WEEKDAY i YEARDAY se ne mogu koristiti. To nema smisla.

2) YEAR, MONTH i DAY se ne mogu koristiti sa vremenskim vrednostima.

3) Sve vrednosti timestamp\_part mogu se koristiti sa timestamp vrednostima.

4) Kada se koriste hour, minute, second i millisecond za DATEADD i datume, količina koja se dodaje ili

    oduzima treba da obuhvata najmanje jedan dan da bi proizvela efekat (npr. dodavanje 23 sata datumu

    ga ne uvećava).

Primer:

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

    from rdb$database;

---—–

DATEDIFF

---—–

Funkcija:

Vraća tačnu numeričku vrednost koja predstavlja količinu vremena od prve

vrednosti datuma/vremena/timestamp-a do druge.

Format:

DATEDIFF( <timestamp\_part> FROM <date\_time> TO <date\_time> )

DATEDIFF( <timestamp\_part>, <date\_time>, <date\_time> )

timestamp\_part ::= { YEAR \| MONTH \| DAY \| WEEK \| HOUR \| MINUTE \| SECOND \| MILLISECOND }

Napomene:

1) Vraća pozitivnu vrednost ako je druga vrednost veća od prve,

   negativnu kada je prva veća ili nulu kada su jednake.

2) Poređenje datuma sa vremenskim vrednostima je nevažeće.

3) WEEKDAY i YEARDAY se ne mogu koristiti. To nema smisla.

4) YEAR, MONTH i DAY se ne mogu koristiti sa vremenskim vrednostima.

5) Sve vrednosti timestamp\_part mogu se koristiti sa timestamp vrednostima.

Primer:

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

    from rdb$database;

---—

DECODE

---—

Funkcija:

DECODE je skraćenica za CASE ... WHEN ... ELSE izraz.

Format:

DECODE( <expression>, <search>, <result> \[ , <search>, <result> ... \] \[, <default> \]

Primer:

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

EXP


Funkcija:

Vraća eksponencijalnu funkciju e na argument.

Format:

EXP( <broj> )

Primer:

select exp(x) from y;

---–

FLOOR

---–

Funkcija:

Vraća vrednost koja predstavlja najveći ceo broj koji je manji

ili jednak ulaznom argumentu.

Format:

FLOOR( <broj> )

Primer:

1) select floor(val) from x;

2) select floor(2.1), floor(-2.1) from rdb$database;  -- vraća 2, -3

---—–

GEN_UUID

---—–

Funkcija:

Vraća univerzalni jedinstveni broj u tipu CHAR(16) OCTETS.

Format:

GEN\_UUID()

Važno:

Pre Firebird 2.5.2, GEN\_UUID je vraćao potpuno slučajne stringove. To nije u skladu

sa RFC-4122 (specifikacija UUID).

Ovo je ispravljeno u Firebird 2.5.2 i 3.0. Sada GEN\_UUID vraća UUID string verzije 4

u skladu sa specifikacijom, gde su neki bitovi rezervisani a ostali slučajni. Format stringa

usklađenog UUID-a je XXXXXXXX-XXXX-4XXX-YXXX-XXXXXXXXXXXX, gde je 4 fiksno (verzija) a Y je 8, 9, A ili B.

Primer:

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

Vidi takođe: CHAR_TO_UUID i UUID_TO_CHAR

----

HASH

----

Funkcija:

Vraća HASH stringa.

Format:

HASH( <string> )

Primer:

select hash(x) from y;

----

LEFT

----

Funkcija:

Vraća podstring određene dužine koji se nalazi na početku stringa.

Format:

LEFT( <string>, <broj> )

Primer:

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

    from people

    where name like '% FERNANDES';

–

LN

–

Funkcija:

Vraća prirodni logaritam broja.

Format:

LN( <broj> )

Primer:

select ln(x) from y;

---

LOG

---

Funkcija:

LOG(x, y) vraća logaritam osnove x od y.

Format:

LOG( <broj>, <broj> )

Primer:

select log(x, 10) from y;

---–

LOG10

---–

Funkcija:

Vraća logaritam osnove deset od broja.

Format:

LOG10( <broj> )

Primer:

select log10(x) from y;

----

LPAD

----

Funkcija:

LPAD(string1, length, string2) dodaje string2 na početak

string1 sve dok dužina rezultujućeg stringa ne postane jednaka length.

Format:

LPAD( <string>, <broj> \[, <string> \] )

Napomene:

1) Ako je drugi string izostavljen podrazumevana vrednost je jedan razmak.

2) Drugi string se skraćuje kada rezultujući string

   postane veći od length.

3) Prvi string se skraćuje ako je njegova dužina veća od parametra

   length.

Primer:

select lpad(x, 10) from y;

---—–

MAXVALUE

---—–

Funkcija:

Vraća maksimalnu vrednost iz liste vrednosti.

Format:

MAXVALUE( <vrednost> \[, <vrednost> ...\] )

Primer:

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

---—–

MINVALUE

---—–

Funkcija:

Vraća minimalnu vrednost iz liste vrednosti.

Format:

MINVALUE( <vrednost> \[, <vrednost> ...\] )

Primer:

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

---

MOD

---

Funkcija:

MOD(X, Y) vraća ostatak pri deljenju X sa Y.

Format:

MOD( <broj>, <broj> )

Primer:

select mod(x, 10) from y;

---—-

OVERLAY

---—-

Funkcija:

OVERLAY( <string1> PLACING <string2> FROM <start> \[ FOR <length> \] ) vraća

string1 zamenjujući podstring FROM start FOR length sa string2.

Format:

OVERLAY( <string> PLACING <string> FROM <broj> \[ FOR <broj> \] )

Napomene:

1) Ako <length> nije naveden, podrazumeva se CHAR\_LENGTH( <string2> ).

2) Funkcija OVERLAY je ekvivalentna sa:

       SUBSTRING(<string1> FROM 1 FOR <start> - 1) \|\|

       <string2> \|\|

       SUBSTRING(<string1> FROM <start> + <length>)

–

PI

–

Funkcija:

Vraća PI konstantu (3.1459...).

Format:

PI()

Primer:

val = PI();

---—–

POSITION

---—–

Funkcija:

Vraća poziciju prvog stringa unutar drugog stringa počevši od

pomaka (ili od početka kada je izostavljen). Kada nije pronađen, vraća 0.

Format:

POSITION( <string> IN <string> )

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

Primer:

select rdb$relation\_name

    from rdb$relations

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

---–

POWER

---–

Funkcija:

POWER(X, Y) vraća X na stepen Y.

Format:

POWER( <broj>, <broj> )

Primer:

select power(x, 10) from y;

----

RAND

----

Funkcija:

Vraća slučajan broj između 0 i 1.

Format:

RAND()

Primer:

select \* from x order by rand();

---—-

REPLACE

---—-

Funkcija:

REPLACE(searched, find, replacement) zamenjuje sva pojavljivanja "find"

u "searched" sa "replacement".

Format:

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

Primer:

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

---—-

REVERSE

---—-

Funkcija:

Vraća string u obrnutom redosledu.

Format:

REVERSE( <vrednost> )

Napomene:

REVERSE je korisna funkcija za indeksiranje stringova s desna na levo.

Primer:

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

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

---–

RIGHT

---–

Funkcija:

RIGHT(string, length)

Vraća podstring određene dužine koji se nalazi na kraju stringa.

Format:

RIGHT( <string>, <broj> )

Primer:

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

    from rdb$relations

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

---–

ROUND

---–

Funkcija:

ROUND(number, scale)

Vraća broj zaokružen na specificiranu skalu.

Format:

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

Napomene:

Ako je skala (drugi parametar) negativna, zaokružuje se celobrojni deo

vrednosti. Npr: ROUND(123.456, -1) vraća 120.000.

Primeri:

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

----

RPAD

----

Funkcija:

RPAD(string1, length, string2) dodaje string2 na kraj

string1 sve dok dužina rezultujućeg stringa ne postane jednaka length.

Format:

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

Napomene:

1) Ako je drugi string izostavljen podrazumevana vrednost je jedan razmak.

2) Drugi string se skraćuje kada rezultujući string

   postane veći od length.

3) Prvi string se skraćuje ako je njegova dužina veća od parametra

   length.

Primer:

select rpad(x, 10) from y;

----

SIGN

----

Funkcija:

Vraća 1, 0 ili -1 u zavisnosti od toga da li je ulazna vrednost pozitivna, nula ili

negativna.

Format:

SIGN( <broj> )

Primer:

select sign(x) from y;

---

SIN

---

Funkcija:

Vraća sinus ugla (izraženog u radijanima).

Format:

SIN( <broj> )

Napomene:

Argument za SIN mora biti naveden u radijanima.

Primer:

select sin(x) from y;

----

SINH

----

Funkcija:

Vraća hiperbolički sinus ugla (izraženog u radijanima).

Format:

SINH( <broj> )

Primer:

select sinh(x) from y;

----

SQRT

----

Funkcija:

Vraća kvadratni koren broja.

Format:

SQRT( <broj> )

Primer:

select sqrt(x) from y;

---

TAN

---

Funkcija:

Vraća tangens ugla (izraženog u radijanima).

Format:

TAN( <broj> )

Napomene:

Argument za TAN mora biti naveden u radijanima.

Primer:

select tan(x) from y;

----

TANH

----

Funkcija:

Vraća hiperbolički tangens ugla (izraženog u radijanima).

Format:

TANH( <broj> )

Primer:

select tanh(x) from y;

---–

TRUNC

---–

Funkcija:

TRUNC(number, scale)

Vraća celobrojni deo (do specificirane skale) broja.

Format:

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

Napomene:

Ako je skala (drugi parametar) negativna, skraćuje se celobrojni deo

vrednosti. Npr: TRUNC(123.456, -1) vraća 120.000.

Primer:

1) select trunc(x) from y;
  1. select trunc(-2.8), trunc(2.8) from rdb$database; – vraća -2, 2

    1. select trunc(987.65, 1), trunc(987.65, -1) from rdb$database; – vraća 987.60, 980.00

---———

UUID_TO_CHAR

---———

Funkcija:

Konvertuje CHAR(16) OCTETS UUID (koji vraća GEN\_UUID) u

CHAR(32) ASCII reprezentaciju (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX).

Format:

UUID\_TO\_CHAR( <string> )

Važno (za big-endian servere):

Otkriveno je da pre Firebird 2.5.2, CHAR\_TO\_UUID i UUID\_TO\_CHAR rade

nepravilno na big-endian serverima. Na tim mašinama, bajtovi/karakteri se zamjenjuju i idu na

pogrešne pozicije prilikom konverzije. Ovaj bug je ispravljen u 2.5.2 i 3.0, ali to znači da ove

funkcije sada vraćaju različite vrijednosti (za isti ulazni parametar) nego prije.

Primjer:

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

Vidi takođe: GEN_UUID i CHAR_TO_UUID