Цю сторінку перекладено машинним перекладом. Читайте англійський оригінал. English

Бібліотека IBSurgeon

Вбудовані функції Firebird 3.0 (SDF, тобто функції, визначені сервером)

Вбудовані функції нижче (крім DECODE) використовуються лише якщо немає

UDF, оголошеної з тим самим ім’ям.

Цей вибір UDF або системної функції вирішується під час компіляції

оператора і не змінюється, якщо оператор зберігається (тригер / SP).

Автори:

Adriano dos Santos Fernandes <[email protected]>

Oleg Loa <[email protected]>

Alexey Karyakin <[email protected]>

Claudio Valderrama C. <cvalde at usa.net>

---

ABS

---

Функція:

Повертає абсолютне значення числа.

Формат:

ABS( <number> )

Приклад:

select abs(amount) from transactions;

----

ACOS

----

Функція:

Повертає арккосинус числа.

Формат:

ACOS( <number> )

Примітки:

Аргумент ACOS має бути в діапазоні від -1 до 1, і повертає значення в

діапазоні від 0 до PI.

Приклад:

select acos(x) from y;

---–

ACOSH

---–

Функція:

Повертає гіперболічний арккосинус числа (виражений у радіанах).

Формат:

ACOSH( <number> )

Приклад:

select acosh(x) from y;

---——-

ASCII_CHAR

---——-

Функція:

Повертає ASCII-символ із зазначеним кодом.

Формат:

ASCII\_CHAR( <number> )

Примітки:

Аргумент ASCII\_CHAR має бути в діапазоні від 0 до 255 і повертає значення

з набором символів NONE.

Приклад:

select ascii\_char(x) from y;

---——

ASCII_VAL

---——

Функція:

Повертає ASCII-код першого символу зазначеного рядка.

Формат:

ASCII\_VAL( <string> )

Примітки:

1) Повертає 0, якщо рядок порожній.

2) Видає помилку, якщо перший символ є багатобайтовим.

Приклад:

select ascii\_val(x) from y;

----

ASIN

----

Функція:

Повертає арксинус числа.

Формат:

ASIN( <number> )

Примітки:

Аргумент ASIN має бути в діапазоні від -1 до 1, і повертає значення в

діапазоні від -PI / 2 до PI / 2.

Приклад:

select asin(x) from y;

---–

ASINH

---–

Функція:

Повертає гіперболічний арксинус числа (виражений у радіанах).

Формат:

ASINH( <number> )

Приклад:

select asinh(x) from y;

----

ATAN

----

Функція:

Повертає арктангенс числа.

Формат:

ATAN( <number> )

Примітки:

Повертає значення в діапазоні від -PI / 2 до PI / 2.

Приклад:

select atan(x) from y;

---–

ATAN2

---–

Функція:

Повертає арктангенс першого числа / другого числа.

Формат:

ATAN( <number>, <number> )

Примітки:

Повертає значення в діапазоні від -PI до PI.

Приклад:

select atan2(x, y) from z;

---–

ATANH

---–

Функція:

Повертає гіперболічний арктангенс числа (виражений у радіанах).

Формат:

ATANH( <number> )

Приклад:

select atanh(x) from y;

---—-

BIN_AND

---—-

Функція:

Повертає результат бінарної операції AND, виконаної над усіма аргументами.

Формат:

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

Приклад:

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

---—-

BIN_NOT

---—-

Функція:

Повертає результат побітової операції NOT, виконаної над її аргументом.

Формат:

BIN\_NOT( <number> )

Приклад:

select bin\_not(flags) from x;

---—

BIN_OR

---—

Функція:

Повертає результат бінарної операції OR, виконаної над усіма аргументами.

Формат:

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

Приклад:

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

---—-

BIN_SHL

---—-

Функція:

Повертає результат бінарної операції зсуву вліво, виконаної над аргументами (перший << другий).

Формат:

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

Приклад:

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

---—-

BIN_SHR

---—-

Функція:

Повертає результат бінарної операції зсуву вправо, виконаної над аргументами (перший >> другий).

Формат:

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

Приклад:

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

---—-

BIN_XOR

---—-

Функція:

Повертає результат бінарної операції XOR, виконаної над усіма аргументами.

Формат:

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

Приклад:

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

---———–

CEIL | CEILING

---———–

Функція:

Повертає значення, що представляє найменше ціле число, яке більше

або дорівнює вхідному аргументу.

Формат:

{ CEIL \| CEILING }( <number> )

Приклад:

1) select ceil(val) from x;

2) select ceil(2.1), ceil(-2.1) from rdb$database;  -- повертає 3, -2

---———

CHAR_TO_UUID

---———

Функція:

Перетворює CHAR(32) ASCII-представлення UUID

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

представлення (оптимізоване для зберігання).

Формат:

CHAR\_TO\_UUID( <string> )

Важливо (для серверів з порядком байтів big-endian):

Було виявлено, що до Firebird 2.5.2, CHAR\_TO\_UUID та UUID\_TO\_CHAR працюють

неправильно на серверах з порядком байтів big-endian. На цих машинах байти/символи міняються місцями і потрапляють

у неправильні позиції під час перетворення. Цю помилку було виправлено в 2.5.2 та 3.0, але це означає, що ці

функції тепер повертають інші значення (для того самого вхідного параметра), ніж раніше.

Приклад:

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

Дивіться також: GEN_UUID та UUID_TO_CHAR

---

COS

---

Функція:

Повертає косинус кута (вираженого в радіанах).

Формат:

COS( <number> )

Примітки:

Кут задається в радіанах і повертає значення в діапазоні від -1 до 1.

Приклад:

select cos(x) from y;

----

COSH

----

Функція:

Повертає гіперболічний косинус кута (вираженого в радіанах).

Формат:

COSH( <number> )

Приклад:

select cosh(x) from y;

---

COT

---

Функція:

Повертає 1 / tan(аргумент).

Формат:

COT( <number> )

Приклад:

select cot(x) from y;

---—-

DATEADD

---—-

Функція:

Повертає значення дати/часу/мітки часу, збільшене (або зменшене, якщо від'ємне)

на зазначену кількість часу.

Формат:

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

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

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

Примітки:

1) WEEKDAY та YEARDAY не можна використовувати. Це не має сенсу.

2) YEAR, MONTH та DAY не можна використовувати зі значеннями часу.

3) Усі значення timestamp\_part можна використовувати зі значеннями мітки часу.

4) При використанні hour, minute, second та millisecond для DATEADD і дат, додана або

    віднята кількість має становити принаймні один день, щоб мати ефект (тобто додавання 23 годин до дати

    не збільшує її).

Приклад:

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

    from rdb$database;

---—–

DATEDIFF

---—–

Функція:

Повертає точне числове значення, що представляє кількість часу від першого

значення дати/часу/мітки часу до другого.

Формат:

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 }

Примітки:

1) Повертає додатне значення, якщо друге значення більше за перше,

   від'ємне, коли перше більше, або нуль, коли вони рівні.

2) Порівняння дати зі значеннями часу є недійсним.

3) WEEKDAY та YEARDAY не можна використовувати. Це не має сенсу.

4) YEAR, MONTH та DAY не можна використовувати зі значеннями часу.

5) Усі значення timestamp\_part можна використовувати зі значеннями мітки часу.

Приклад:

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

    from rdb$database;

---—

DECODE

---—

Функція:

DECODE - це скорочення для виразу CASE ... WHEN ... ELSE.

Формат:

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

Приклад:

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

EXP


Функція:

Повертає експоненту e в степені аргументу.

Формат:

EXP( <number> )

Приклад:

select exp(x) from y;

FLOOR


Функція:

Повертає значення, що представляє найбільше ціле число, яке менше

або дорівнює вхідному аргументу.

Формат:

FLOOR( <number> )

Приклад:

1) select floor(val) from x;

2) select floor(2.1), floor(-2.1) from rdb$database;  -- повертає 2, -3

GEN_UUID


Функція:

Повертає універсальний унікальний номер у типі CHAR(16) OCTETS.

Формат:

GEN_UUID()

Важливо:

До Firebird 2.5.2, GEN_UUID повертала повністю випадкові рядки. Це не відповідає

RFC-4122 (специфікації UUID).

Це було виправлено у Firebird 2.5.2 та 3.0. Тепер GEN_UUID повертає сумісний UUID версії 4

рядок, де деякі біти зарезервовані, а інші випадкові. Формат рядка сумісного

UUID: XXXXXXXX-XXXX-4XXX-YXXX-XXXXXXXXXXXX, де 4 фіксована (версія), а Y - це 8, 9, A або B.

Приклад:

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

Дивіться також: CHAR_TO_UUID та UUID_TO_CHAR


HASH


Функція:

Повертає HASH рядка.

Формат:

HASH( <string> )

Приклад:

select hash(x) from y;

LEFT


Функція:

Повертає підрядок вказаної довжини, який з'являється на початку рядка.

Формат:

LEFT( <string>, <number> )

Приклад:

select left(name, char_length(name) - 10)

    from people

    where name like '% FERNANDES';

LN

Функція:

Повертає натуральний логарифм числа.

Формат:

LN( <number> )

Приклад:

select ln(x) from y;

LOG


Функція:

LOG(x, y) повертає логарифм y за основою x.

Формат:

LOG( <number>, <number> )

Приклад:

select log(x, 10) from y;

LOG10


Функція:

Повертає десятковий логарифм числа.

Формат:

LOG10( <number> )

Приклад:

select log10(x) from y;

LPAD


Функція:

LPAD(string1, length, string2) додає string2 на початок

string1, доки довжина результуючого рядка не стане рівною length.

Формат:

LPAD( <string>, <number> [, <string> ] )

Примітки:

1) Якщо другий рядок опущено, значенням за замовчуванням є один пробіл.

2) Другий рядок обрізається, коли результуючий рядок стане

   більшим за length.

3) Перший рядок обрізається, якщо його довжина більша за параметр

   length.

Приклад:

select lpad(x, 10) from y;

MAXVALUE


Функція:

Повертає максимальне значення зі списку значень.

Формат:

MAXVALUE( <value> [, <value> ...] )

Приклад:

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

MINVALUE


Функція:

Повертає мінімальне значення зі списку значень.

Формат:

MINVALUE( <value> [, <value> ...] )

Приклад:

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

MOD


Функція:

MOD(X, Y) повертає залишок від ділення X на Y.

Формат:

MOD( <number>, <number> )

Приклад:

select mod(x, 10) from y;

OVERLAY


Функція:

OVERLAY( <string1> PLACING <string2> FROM <start> [ FOR <length> ] ) повертає

string1, замінюючи підрядок FROM start FOR length на string2.

Формат:

OVERLAY( <string> PLACING <string> FROM <number> [ FOR <number> ] )

Примітки:

1) Якщо <length> не вказано, мається на увазі CHAR_LENGTH( <string2> ).

2) Функція OVERLAY еквівалентна:

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

       <string2> ||

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

PI

Функція:

Повертає константу PI (3.1459...).

Формат:

PI()

Приклад:

val = PI();

POSITION


Функція:

Повертає позицію першого рядка всередині другого рядка, починаючи зі

зміщення (або з початку, якщо його опущено). Якщо не знайдено, повертає 0.

Формат:

POSITION( <string> IN <string> )

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

Приклад:

select rdb$relation_name

    from rdb$relations

    where position('RDB$' IN rdb$relation_name) = 1;

POWER


Функція:

POWER(X, Y) повертає X у степені Y.

Формат:

POWER( <number>, <number> )

Приклад:

select power(x, 10) from y;

RAND


Функція:

Повертає випадкове число між 0 та 1.

Формат:

RAND()

Приклад:

select * from x order by rand();

REPLACE


Функція:

REPLACE(searched, find, replacement) замінює всі входження "find"

у "searched" на "replacement".

Формат:

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

Приклад:

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

REVERSE


Функція:

Повертає рядок у зворотному порядку.

Формат:

REVERSE( <value> )

Примітки:

REVERSE - корисна функція для індексування рядків справа наліво.

Приклад:

create index people_email on people computed by (reverse(email));

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

RIGHT


Функція:

RIGHT(string, length)

Повертає підрядок вказаної довжини, який з'являється в кінці рядка.

Формат:

RIGHT( <string>, <number> )

Приклад:

select right(rdb$relation_name, char_length(rdb$relation_name) - 4)

    from rdb$relations

    where rdb$relation_name like 'RDB$%';

ROUND


Функція:

ROUND(number, scale)

Повертає число, округлене до вказаного масштабу.

Формат:

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

Примітки:

Якщо масштаб (другий параметр) від'ємний, ціла частина

значення округлюється. Напр.: ROUND(123.456, -1) повертає 120.000.

Приклади:

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

RPAD


Функція:

RPAD(string1, length, string2) додає string2 в кінець

string1, доки довжина результуючого рядка не стане рівною length.

Формат:

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

Примітки:

1) Якщо другий рядок опущено, значенням за замовчуванням є один пробіл.

2) Другий рядок обрізається, коли результуючий рядок стане

   більшим за length.

3) Перший рядок обрізається, якщо його довжина більша за параметр

   length.

Приклад:

select rpad(x, 10) from y;

SIGN


Функція:

Повертає 1, 0 або -1 залежно від того, чи вхідне значення є додатним, нульовим або

від'ємним відповідно.

Формат:

SIGN( <number> )

Приклад:

select sign(x) from y;

SIN


Функція:

Повертає синус кута (вираженого в радіанах).

Формат:

SIN( <number> )

Примітки:

Аргумент SIN має бути вказаний у радіанах.

Приклад:

select sin(x) from y;

SINH


Функція:

Повертає гіперболічний синус кута (вираженого в радіанах).

Формат:

SINH( <number> )

Приклад:

select sinh(x) from y;

SQRT


Функція:

Повертає квадратний корінь числа.

Формат:

SQRT( <number> )

Приклад:

select sqrt(x) from y;

TAN


Функція:

Повертає тангенс кута (вираженого в радіанах).

Формат:

TAN( <number> )

Примітки:

Аргумент TAN має бути вказаний у радіанах.

Приклад:

select tan(x) from y;

TANH


Функція:

Повертає гіперболічний тангенс кута (вираженого в радіанах).

Формат:

TANH( <number> )

Приклад:

select tanh(x) from y;

TRUNC


Функція:

TRUNC(number, scale)

Повертає цілу частину (до вказаного масштабу) числа.

Формат:

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

Примітки:

Якщо масштаб (другий параметр) від'ємний, ціла частина

значення обрізається. Напр.: TRUNC(123.456, -1) повертає 120.000.

Приклад:

1) select trunc(x) from y;
  1. select trunc(-2.8), trunc(2.8) from rdb$database; – повертає -2, 2

    1. select trunc(987.65, 1), trunc(987.65, -1) from rdb$database; – повертає 987.60, 980.00

---———

UUID_TO_CHAR

---———

Функція:

Перетворює UUID CHAR(16) OCTETS (який повертає GEN\_UUID) у

ASCII-представлення CHAR(32) (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX).

Формат:

UUID\_TO\_CHAR( <string> )

Важливо (для серверів з порядком байтів big-endian):

Було виявлено, що до Firebird 2.5.2 функції CHAR\_TO\_UUID та UUID\_TO\_CHAR працюють

неправильно на серверах з порядком байтів big-endian. На цих машинах байти/символи міняються місцями

і потрапляють у неправильні позиції під час перетворення. Цю помилку було виправлено у версіях 2.5.2 та 3.0,

але це означає, що тепер ці функції повертають інші значення (для того самого вхідного параметра), ніж раніше.

Приклад:

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

Дивіться також: GEN_UUID та CHAR_TO_UUID