Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
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 ...; |