Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Математические функции
Математические функции
IB_UDF |
ABS(VALUE) |
Linux, Win32 |
Возвращает абсолютное значение числа |
Аргументы |
VALUE является столбцом или выражением, которое совместимо с типом DOUBLE PRECISION |
Возвращаемое значение |
Число DOUBLE PRECISION |
Пример |
Этот оператор суммирует все отрицательные значения и возвращает итог в виде положительного числа: SELECT ABS(SUM(ASSET_VALUE)) AS LIABILITY FROM ASSET_REGISTER WHERE ASSET VALUE < 0; |
Похожие функции |
См. другую внешнюю функцию f_DoubleAbs(), которая выполняет те же действия |
IB_UDF |
BIN_AND(VALUE1, VALUE2) |
Linux, Win32 |
Возвращает результат побитовой операции AND (И), выполняемой с двумя входными значениями |
Аргументы |
VALUE1 и VALUE2, являются столбцами или выражениями, которые преобразуются к типу SMALLINT или INTEGER |
Возвращаемое значение |
Значение INTEGER |
Пример |
SELECT BIN_AND (128,24) AS ANDED_ RESULT FROM RDB $ DATABASE; |
IB_UDF |
BIN_OR(VALUE1, VALUE2) |
Linux, Win32 |
Возвращает результат двоичной (побитовой) операции OR (ИЛИ), выполняемой с двумя входными значениями |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, которые преобразуются К типу SMALLINT или INTEGER |
Возвращаемое значение |
Значение INTEGER |
Пример |
SELECT BIN_OR(128, 24) AS ORED_RESULT FROM RDB$DATABASE; |
IB_UDF |
BIN_XOR(VALUE1, VALUE2) |
Linux, Win32 |
Возвращает результат двоичной (побитовой) операции XOR (исключающее ИЛИ), выполняемой с двумя входными значениями |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, которые преобразуются К типу SMALLINT или INTEGER |
Возвращаемое значение |
Значение INTEGER |
Пример |
SELECT BIN_XOR(128, 24) AS EXORED_RESULT FROM RDB$DATABASE; |
IB_UDF |
CEILING(VALUE) |
Linux, Win32 |
Возвращает значение типа DOUBLE PRECISION, представляющее наименьшее целое, большее или равное входному значению |
Аргументы |
VALUE является столбцом или выражением, которое дает число типа DOUBLE PRECISION |
Возвращаемое значение |
Число DOUBLE PRECISION С нулевым количеством дробных знаков |
Пример |
SELECT CEILING (LAST_TOTAL) AS ROUND_UP_NEAREST FROM SALES_HISTORY; |
IB_UDF |
DIV(VALUE1, VALUE2) |
Linux, Win32 |
Делит два целых числа и возвращает частное, отбрасывая дробную часть |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, которые преобразуются к числам типа SMALLINT или INTEGER |
Возвращаемое значение |
Число DOUBLE PRECISION с нулевым количеством дробных знаков |
Пример |
SELECT DIV(TERM, (CURRENT_DATE - START_DATE) / 365) AS YEARS_REMAINING FROM MORTGAGE_ACCOUNT WHERE ACCOUNT_ID = 12345; |
FBUDF |
DPOWER(VALUE, EXPONENT) |
Linux, Win32 |
Получает число и показатель степени и возвращает степень числа |
Аргументы |
EXPONENT является столбцом или выражением, которое дает число типа DOUBLE PRECISION |
Возвращаемое значение |
Возвращает степень числа в виде DOUBLE PRECISION |
Пример |
SELECT DPOWER(2.64575,2) AS NEARLY_7 FROM RDB$DATABASE; |
Связанные или похожие функции |
См. также SQRTO |
FREEUDFLIB |
F_DOUBLEABS(VALUE) |
Win32 |
Возвращает абсолютное значение числа с плавающей точкой |
Аргументы |
VALUE является столбцом или выражением, которое преобразуется в число типа DOUBLE PRECISION или FLOAT |
Возвращаемое значение |
Положительное число типа DOUBLE PRECISION |
Пример |
SELECT ABS(SUM(ASSET_VALUE) ) AS LIABILITY FROM ASSET REGISTER WHERE ASSET VALUE < 0; |
Связанные или похожие функции |
См. также другую внешнюю функцию ABS(), которая выполняет ту же самую задачу и доступна не только на платформах Windows |
FREEUDFLIB |
F_ISDVISIBLEBY(VALUE1, VALUE2) |
Win32 |
Определяет, является ли значение нацело делимым на другое значение (то есть является ли VALUE2 делителем VALUE1). Возвращает 1, если числитель(VALUE1) нацело делится на знаменатель(VALUE2); иначе возвращает 0 |
Аргументы |
VALUE1: столбец или выражение, результатом вычисления которого является целый тип - число, которое будет делиться (числитель). VALUE2: другое целое - число, используемое в качестве знаменателя |
Возвращаемое значение |
Возвращает 1, если истинно, 0, если ложно |
Пример |
Эта функция может быть вызвана из ограничения CHECK, как в следующем примере: ALTER TABLE ORDER DETAIL ADD CONSTRAINT CHECK_MULTIPLE CHECK (ISDIVISIBLEBY (ORDER_QTY, PACK_QTY) = 1); Подобная проверка может быть использована в случае, когда для расфасованных элементов указана цена за единицу, а не за расфасовку |
FREEUDFLIB |
F_MODULO(VALUE1, VALUE2) |
Win32 |
Функция возвращает остаток отделения двух целых чисел |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, которые вычисляются в числа типа SMALLINT или INTEGER |
Возвращаемое значение |
Число целого типа |
Замечания |
Эта версия функции получения остатка от деления может быть более полезной, чем MOD(), В сложных выражениях, где возвращаемое значение является частью другого выражения, которое оперирует целыми числами.(MOD() возвращает число с плавающей точкой.) |
Пример |
Фрагмент из триггера: ... IF (MODULO(NEW.HOURS * 100, 775) > 0.25) THEN ; NEW.OVERTIME_HOURS = MODULO(NEW.HOURS * 100, 775) / 100; |
Связанные или похожие функции |
См. также функцию MOD(), которая возвращает число с плавающей точкой |
FREEUDFLIB |
F_ROUNDFLOAT(VALUE1, VALUE2) |
Win32 |
Округляет передаваемое значение до ближайшего значения, которое больше или меньше заданной дробной части |
Аргументы |
VALUE1: столбец или выражение, результатом вычисления которого является тип с плавающей точкой. Это округляемое число. VALUE2: столбец или выражение, результатом вычисления которого является тип с плавающей точкой. Это должно быть число меньше 1 и больше 0. Например, передайте значение 0.25 для округления до ближайшей четверти |
Возвращаемое значение |
Число с плавающей точкой, которое является VALUE1, округленным до ближайшей дробной части VALUE2 |
Пример |
Следующий оператор вычисляет PAID_HOURS, округляя HOURS WORKED до ближайшей четверти часа: UPDATE TIMESHEET SET PAID HOURS = F_ROUNDFLOAT(HOURS WORKED, 0.25) WHERE DATE_TIMESTAMP > CURRENT_DATE - 7; |
Связанные или похожие функции |
См. также ROUND() |
FREEUDFLIB |
F_TRUNCATE(VALUE) |
Win32 |
Усекает число с плавающей точкой до целого |
Аргументы |
VALUE является столбцом или выражением, результатом вычисления которого является число с плавающей точкой |
Возвращаемое значение |
Убирает дробную часть у VALUE и возвращает целую часть в виде целого типа |
Пример |
Следующий оператор вернет целое число: SELECT F_TRUNCATE(SUM(AMT_OUTSTANDING)) AS ESTIMATED_DEBTORS FROM ACCOUNT WHERE AMT_OUTSTANDING > 0; |
Связанные или похожие функции |
См. также TRUNCATE() и ROUND() |
IB_UDF |
FLOOR(VALUE) |
Linux, Win32 |
Возвращает значение с плавающей точкой, представляющее наибольшее целое, меньшее или равное VALUE |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION С нулевой дробной частью |
Пример |
SELECT FLOOR (CURRENT_DATE - START_DATE) AS DAYS_ELAPSED FROM DVD_LOANS; |
IB_UDF |
LN(VALUE) |
Linux, Win32 |
Возвращает натуральный логарифм числа |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
SELECT LN ( (CURRENT_TIMESTAMP - LEASE_DATE) / 7) AS NLOG_WEEKS FROM LEASE_ACCOUNT ; |
IB_UDF |
LOG(VALUE1, VALUE2) |
Linux, Win32 |
Возвращает логарифм по основанию x = VALUE1 числа у = VALUE2 |
Аргументы |
VALUE1 (основание логарифма) и VALUE2 (число, с которым проводится операция) являются столбцами или выражениями, вычисляемыми в числа типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Замечания |
Firebird 1.0.x и версии InterBase в этой функции имеют ошибку: log(x.y) ошибочно инвертирует аргументы и возвращает логарифм по основанию у числа x. Это было исправлено в версии 1.5. Имейте в виду, что существующие хранимые процедуры и код приложения могут иметь корректировки для этой ошибки |
Пример |
SELECT LOG(8, (CURRENT_TIMESTAMP - LEASE_DATE) /7) AS LOG_WEEKS FROM LEASE_ACCOUNT; |
IB_UDF |
LOG10(VALUE) |
Linux, Win32 |
Возвращает десятичный логарифм входного числа |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
SELECT LOG1O( (CURRENT_TIMESTAMP - LEASE_DATE) / 7) AS LOG10_WEEKS FROM LEASE_ACCOUNT ; |
IB_UDF |
MODULO(VALUEl, VALUE2) |
Linux, Win32 |
Функция возвращает остаток отделения двух целых чисел |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, вычисляемыми в числа типа SMALLINT или INTEGER |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
Фрагмент триггера: ...IF (MODULO(NEW.HOURS * 100, 775) > 25.0) THEN NEW.OVERTIME_HOURS = MODULO(NEW.HOURS * 100, 775) / 100; |
Связанные или похожие функции |
См. также функцию f_Modulo(), которая возвращает целое число |
IB_UDF |
PI() |
Linux, Win32 |
Возвращает значение n = 3.14159... |
Аргументы |
Аргументы отсутствуют, однако скобки требуются |
Возвращаемое значение |
Значение n в виде числа DOUBLE PRECISION |
Пример |
SELECT PI() AS PI_VALUE FROM RDB$DATABASE; |
IB_UDF |
RAND() |
Linux, Win32 |
Возвращает случайное число в диапазоне между 0 и 1. Заметьте, что эта функция не работает в Firebird 1.5 |
Аргументы |
Аргументы отсутствуют, но скобки требуются |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Замечания |
В настоящее время используется для установления начального значения генератора |
Пример |
SELECT RAND() AS RANDOM NUMBER FROM RDB$DATABASE; |
IB_UDF |
ROUND(VALCE) |
Linux, Win32 |
Округляет число с фиксированной точкой до ближайшего целого |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число с фиксированной точкой с дробными разрядами >0 |
Возвращаемое значение |
Число целого типа |
Замечания |
Это полное округление. Если цифра сразу после десятичной точки больше или равна 5, то к цифре перед десятичной точкой добавляется единица, и у числа отсекаются дробные цифры. В противном случае просто отсекаются все дробные цифры |
Пример |
Следующий оператор составляет смету на основе результата округления произведения двух чисел NUMERIC(11,2): SELECT JOB_NO, ROUND(RATE * HOURS) + 1 AS ESTIMATE FROM QUOTATION WHERE RATE IS NOT NULL AND HOURS IS NOT NULL; |
Связанные или похожие функции |
См. также TRUNCATE(), F_ROUNDFLOAT() |
IB_UDF |
SIGN(VALUE) |
Linux, Win32 |
Возвращает 0, 1 или -1 в зависимости от того, является ли входное значение положительным, нулем или отрицательным соответственно |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
Фрагмент триггера: ... IF (SIGN(NEW.CURRENT_VALUE) < 1) THEN ...; |
IB_UDF |
SQRT(VALUE) |
Linux, Win32 |
Возвращает квадратный корень числа |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
Фрагмент триггера: ... IF (SQRT(NEW.HYPOTENUSE) = SQRT(NEW.SIDE1) + SQRT(NEW.SIDE2)) THEN NEW.RIGHT ANGLED TRIANGLE = 'T'; |
FBUDF |
TRUNCATE(VALUE) |
Linux, Win32 |
Усекает тип с фиксированной точкой до следующего меньшего целого |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число с фиксированной точкой с дробными разрядами > 0 |
Возвращаемое значение |
Число целого типа |
Замечания |
Как и для некоторых других функций из этой библиотеки, вам нужно два объявления, чтобы использовать 32- и 64-битовый вход. Проверьте объявления в скрипте fdudf.sql truncate и i64truncate |
Пример |
Следующий оператор составляет смету на основе результата усечения произведения двух чисел NUMERIC (11,2): SELECT JOB_NO, TRUNCATE (RATE * HOURS) + 1 AS ESTIMATE FROM QUOTATION WHERE RATE IS NOT NULL AND HOURS IS NOT NULL; |
Связанные или похожие функции |
См. также ROUND(), F_TRUNCATE() |
- Часть 3. Функции клиентского сервиса
- 5.3. Функции mq_getattr и mq_setattr
- 6.2. Функции сортировки и поиска
- 12.2. Низкоуровневая память: функции memXXX()
- 7.8 Другие библиотечные функции
- Булевые функции Функция boolean
- Применение функции function-available
- Функции, функторы и классы функций
- У18.3 Однократные функции в родовых классах
- 7.8.6 Математические функции
- B4. Математические функции:
- Стандартные математические функции