Читать интересную книгу Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 190 191 192 193 194 195 196 197 198 ... 238

Подобная проверка может быть использована в случае, когда для расфасованных элементов указана цена за единицу, а не за расфасовку

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

1 ... 190 191 192 193 194 195 196 197 198 ... 238
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри.
Книги, аналогичгные Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Оставить комментарий