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

IBSurgeon библиотека

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

Ugrađene funkcije u nastavku (osim DECODE) koriste se samo ako ne postoji

UDF deklarisan sa istim imenom.

Ovaj izbor između UDF-a ili sistemske funkcije odlučuje se prilikom kompajliranja

naredbe i ne menja se ako je naredba sačuvana (okidač / skladištena procedura).

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( <broj> )

Primer:

select abs(amount) from transactions;

----

ACOS

----

Funkcija:

Vraća arkus kosinus broja.

Format:

ACOS( <broj> )

Napomene:

Argument funkcije 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 arkus kosinus broja (izražen u radijanima).

Format:

ACOSH( <broj> )

Primer:

select acosh(x) from y;

---——-

ASCII_CHAR

---——-

Funkcija:

Vraća ASCII karakter sa navedenim kodom.

Format:

ASCII\_CHAR( <broj> )

Napomene:

Argument funkcije 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 arkus sinus broja.

Format:

ASIN( <broj> )

Napomene:

Argument funkcije 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 arkus sinus broja (izražen u radijanima).

Format:

ASINH( <broj> )

Primer:

select asinh(x) from y;

----

ATAN

----

Funkcija:

Vraća arkus tangens broja.

Format:

ATAN( <broj> )

Napomene:

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

Primer:

select atan(x) from y;

---–

ATAN2

---–

Funkcija:

Vraća arkus tangens prvog broja / drugog broja.

Format:

ATAN( <broj>, <broj> )

Napomene:

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

Primer:

select atan2(x, y) from z;

---–

ATANH

---–

Funkcija:

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

Format:

ATANH( <broj> )

Primer:

select atanh(x) from y;

---—-

BIN_AND

---—-

Funkcija:

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

Format:

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

Primer:

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

---—-

BIN_NOT

---—-

Funkcija:

Vraća rezultat bitovske NOT operacije izvršene nad svojim argumentom.

Format:

BIN\_NOT( <broj> )

Primer:

select bin\_not(flags) from x;

---—

BIN_OR

---—

Funkcija:

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

Format:

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

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( <broj>, <broj> )

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( <broj>, <broj> )

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( <broj>, <broj> \[, <broj> ...\] )

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 }( <broj> )

Primer:

1) select ceil(val) from x;

2) select ceil(2.1), ceil(-2.1) from rdb$database;  -- vraća 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

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

pogrešne pozicije prilikom konverzije. Ova greška je ispravljena u 2.5.2 i 3.0, ali to znači da

ove funkcije sada vraćaju drugačije vrednosti (za isti ulazni parametar) nego ranije.

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žen u radijanima).

Format:

COS( <broj> )

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žen u radijanima).

Format:

COSH( <broj> )

Primer:

select cosh(x) from y;

---

COT

---

Funkcija:

Vraća 1 / tan(argument).

Format:

COT( <broj> )

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( <broj> <timestamp\_deo> TO <datum\_vreme> )

DATEADD( <timestamp\_deo>, <broj>, <datum\_vreme> )

timestamp\_deo ::= { 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\_deo 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 iznosi najmanje jedan dan da bi proizvela efekat (tj. 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\_deo> FROM <datum\_vreme> TO <datum\_vreme> )

DATEDIFF( <timestamp\_deo>, <datum\_vreme>, <datum\_vreme> )

timestamp\_deo ::= { 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\_deo 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( <izraz>, <traženo>, <rezultat> \[ , <traženo>, <rezultat> ... \] \[, <podrazumevano> \]

Primer:

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

EXP


Funkcija:

Vraća eksponencijalnu vrednost e na zadati 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 CHAR(16) OCTETS tipu.

Format:

GEN_UUID()

Važno:

Pre Firebird 2.5.2, GEN_UUID je vraćao potpuno nasumične stringove. Ovo nije u skladu

sa RFC-4122 (UUID specifikacijom).

Ovo je ispravljeno u Firebird 2.5.2 i 3.0. Sada GEN_UUID vraća kompatibilan UUID verzije 4

string, gde su neki bitovi rezervisani, a ostali su nasumični. Format stringa kompatibilnog

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 vrednost stringa.

Format:

HASH( <string> )

Primer:

select hash(x) from y;

LEFT


Funkcija:

Vraća podstring određene dužine koji se pojavljuje 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 broja y za osnovu x.

Format:

LOG( <broj>, <broj> )

Primer:

select log(x, 10) from y;

LOG10


Funkcija:

Vraća logaritam broja za osnovu deset.

Format:

LOG10( <broj> )

Primer:

select log10(x) from y;

LPAD


Funkcija:

LPAD(string1, dužina, string2) dodaje string2 na početak

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

Format:

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

Napomene:

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

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

   postao duži od zadate dužine.

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

   dužine.

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 <dužina> \] ) vraća

string1 zamenjujući podstring FROM start FOR dužina stringom2.

Format:

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

Napomene:

1) Ako <dužina> nije navedena, podrazumeva se CHAR_LENGTH( <string2> ).

2) OVERLAY funkcija je ekvivalentna sa:

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

       <string2> ||

       SUBSTRING(<string1> FROM <start> + <dužina>)

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

ofseta (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 nasumični broj između 0 i 1.

Format:

RAND()

Primer:

select * from x order by rand();

REPLACE


Funkcija:

REPLACE(pretraživano, traženo, zamena) zamenjuje sva pojavljivanja "traženo"

u "pretraživano" sa "zamena".

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, dužina)

Vraća podstring određene dužine koji se pojavljuje 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(broj, skala)

Vraća broj zaokružen na zadatu skalu.

Format:

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

Napomene:

Ako je skala (drugi parametar) negativna, celobrojni deo

vrednosti se zaokružuje. Npr: ROUND(123.456, -1) vraća 120.000.

Primeri:

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

RPAD


Funkcija:

RPAD(string1, dužina, string2) dodaje string2 na kraj

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

Format:

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

Napomene:

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

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

   postao duži od zadate dužine.

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

   dužine.

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, respektivno.

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(broj, skala)

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

Format:

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

Napomene:

Ako je skala (drugi parametar) negativna, celobrojni deo

vrednosti se odseca. 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

pogrešno na big-endian serverima. Na tim mašinama, bajtovi/karakteri se zamenjuju i idu na

pogrešne pozicije prilikom konverzije. Ova greška je ispravljena 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 ranije.

Primer:

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

Vidi takođe: GEN_UUID i CHAR_TO_UUID