Oracle целое от деления

Oracle целое от деления

Функция TRUNC усекает столбец, выражение или значение к n десятичным разрядам.

Функция TRUNC работает с параметрами, подобно таковым из функции ROUND. Если второй параметр 0 или отсутствует, значение усекается до целого. Если второй параметр 2, значение является усеченным к двум десятичным разрядам. Наоборот, если второй параметр –2, значение является усеченным к двум десятичным разрядам слева. Если второй параметр –1, значение является усеченным к одному десятичному разряду слева.

Как и функция ROUND, функция TRUNC может использоваться с функциями даты.

Использование Функции MOD

Для всех сотрудников с заголовком работы "Торговый представитель" вычислить остаток от зарплаты после того, как оно делится на 5 000.

Функция MOD находит остаток от деления первого параметра на второй параметр. Пример на рисунке вычисляет остаток от зарплаты после деления ее на 5 000 для всех сотрудников, ID задания которых является SA_REP.

Отметьте : функция MOD часто используется, чтобы определить, четное значение или нечетное. Функция MOD является также хеш-функцией Oracle.

Иногда недоумение у начинающих работать с Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server вызывают результаты подобных запросов:

Одни (подозреваю, что это пользователи MySQL или Oracle) ожидают результаты типа

a b
0.3333 1.6667

т.е. вещественное число, другие —

a b
2

т.е. округления к ближайшему целому. В то время как SQL Server дает

a b
1

Чтобы развеять это недоумение, скажу, что операция "/" просто обозначает целочисленное деление (а именно, дает в результате неполное частное ), если операнды являются целыми числами. Т.е. отдельного обозначения для этой операции нет, и используется символ "обычного" деления. Если же вы хотите получить десятичное число, то нужно привести хотя бы один операнд к вещественному типу явно (первый столбец) или неявно (второй столбец):

a b
0.333333 1.666666

Операция получения остатка от деления в SQL Server обозначается "%":

a b
1 2

Теперь что касается некоторых других СУБД.

PostgreSQL ведет себя аналогично SQL Server.

В MySQL для получения неполного частного используется специальный оператор DIV :

Остаток от деления можно также получить в стиле а-ля Паскаль:

Хотя будет работать и "общепринятое"

В Oracle вообще нет операции для получения неполного частного, поэтому результат деления

a b
.333333333333333 1.66666666666667

потребуется вручную приводить к целому типу с желаемым результатом, например, так:

a b
1 2

или так

a b
1

Для получения остатка от деления в Oracle используется функция MOD :

PL/SQL реализует несколько операторов, используемых при работе с числами. Эти операторы перечислены в табл. 1 в порядке возрастания приоритетов. Операторы с более низким приоритетом выполняются до операторов с более высоким приоритетом.

Читайте также:  Double в си шарп

Числовые операторы

Оператор
Операция Приоритет
** Возведение в степень 1
+ Тождество 2
Отрицание 2
* Умножение 3
/ Деление 3
+ Сложение 4
Вычитание 4
= Равно 5
Больше чем 5
= Больше либо равно 5
<>, !=,

=, ^=

Не равно 5 IS NULL Проверка неопределенности 5 BETWEEN Принадлежность диапазону 5 NOT Логическое отрицание 6 AND Конъюнкция 7 OR Дизъюнкция 8

Числовые функции

В PL/SQL реализовано множество функций для работы с числами. Мы уже рассматривали функции преобразования TO_CHAR , TO_NUMBER, TO_BINARY_FLOAT и TO_BINARY_DOUBLE . В нескольких ближайших разделах приведены краткие описания важнейших функций. За подробными описаниями конкретных функций обращайтесь к справочнику Oracle SQL Reference.

Функции округления и усечения

Существуют четыре числовые функции, выполняющие округление и усечение числовых значений: CEIL, FLOOR, ROUND и TRUNC . Выбор нужной функции для конкретной ситуации может вызвать затруднения, поэтому в табл. 1 приводятся их сравнительные описания, а на рис. 5 представлены результаты вызова всех четырех функций с разными значениями.

Функция
Описание
CEIL Возвращает наименьшее целое число, большее либо равное заданному значению
FLOOR Возвращает наибольшее целое число, меньшее либо равное заданному значению
ROUND Выполняет округление числа. Положительное значение параметра определяет способ округления цифр, находящихся справа от запятой, а отрицательное — находящихся слева
TRUNC Усекает число до заданного количества десятичных знаков, отбрасывая все цифры, находящиеся справа

Рис. 1. Функции округления и усечения

Тригонометрические функции

В PL/SQL поддерживаются все основные тригонометрические функции. При их использовании следует помнить, что углы задаются в радианах, а не в градусах. Преобразование радианов в градусы и наоборот выполняется по следующим формулам:

В PL/SQL нет отдельной функции для получения числа π, однако его можно получить косвенным методом:

Арккосинус числа –1 равен значению π. Конечно, поскольку это число представляет собой бесконечную десятичную дробь, вы всегда будете работать с его приближенным значением. Для получения нужной точности можно округлить результат вызова ACOS (-1) до нужного количества позиций функцией ROUND .

Сводка числовых функций PL/SQL

В этом разделе представлены краткие описания всех встроенных функций PL/SQL. Там, где это возможно, функции перегружаются для разных числовых типов. Например:

  • ABS
    Функция перегружена для типов BINARY_DOUBLE, BINARY_FLOAT, NUMBER, SIMPLE_INTEGER, SIMPLE_FLOAT, SIMPLE_DOUBLE и PLS_INTEGER , так как операция определения абсолютного значения применима как к вещественным, так и к целочисленным значениям.
  • BITAND
    Функция перегружена для типов PLS_INTEGER и INTEGER (подтип NUMBER ), так как операция AND может применяться только к целочисленным значениям.
  • CEIL
    Функция перегружена для типов BINARY_DOUBLE, BINARY_FLOAT и NUMBER , поскольку функция CEIL не актуальна для целых чисел.

Чтобы узнать, для каких типов перегружена та или иная функция, запросите описание встроенного пакета SYS.STANDARD :

Читайте также:  Бателфилд 2 черный экран что делать

Почти все функции в следующем списке определяются во встроенном пакете SYS . STANDARD . Единственным исключением является функция BIN_TO_NUM . За полной документацией по отдельным функциям обращайтесь к справочнику Oracle SQL Reference.

Возвращает абсолютное значение числа.

Возвращает арккосинус угла n из диапазона [–1; 1]. Возвращаемое функцией значение находится в пределах от 0 до π.

Возвращает арксинус угла n из диапазона [–1; 1]. Возвращаемое функцией значение находится в пределах от −π/2 до −π/2.

Возвращает арктангенс угла n из диапазона (– ∞ ; + ∞ ). Возвращаемое функцией значение находится в пределах от −π/2 до −π/2.

Возвращает арктангенс n/m для чисел n и m из диапазона (– ∞ ; + ∞ ). Возвращаемое функцией значение находится в пределах от −π/2 до −π/2.

BIN_TO_NUM(b1, b2. bn)

Преобразует битовый вектор, представленный значениями от b1 до bn, в число. Каждое из значений вектора должно быть равно либо 0, либо 1. Например, результат вызова BIN_TO_NUM(1,1,0,0) равен 12.

Выполняет поразрядную операцию AND над битами двух положительных целых чисел. Например, вызов BITAND(12,4) дает результат 4, то есть в значении 12 (двоичное 1100) установлен 4-й бит.

Вам будет проще работать с BITAND , если вы ограничитесь положительными целыми числами. Значения типа PLS_INTEGER , особенно удобного в сочетании с BITAND , позволяют хранить значения до 230; таким образом, в вашем распоряжении 30 битов для выполнения поразрядных операций.

Возвращает наименьшее целое число, которое больше либо равно заданному значению. В табл. 1 и рис. 1 функция CEIL сравнивается с другими числовыми функциями округления и усечения.

Возвращает косинус угла n , заданного в радианах. Если угол задается в градусах, то значение следует преобразовать в радианы (см. раздел «Тригонометрические функции»).

Возвращает гиперболический косинус n . Если n — вещественное число, а i — мнимая единица, тогда связь между функциями COS и COSH выражается следующей формулой: COS (i * n) = COSH (n)

Возвращает число e в степени n , где n — аргумент функции. Число e (приблизительно равное 2,71828) является основанием натурального логарифма.

Возвращает наибольшее целое число, которое меньше или равно заданному значению. В табл. 1 и рис. 1 функция FLOOR сравнивается с другими числовыми функциями округления и усечения.

GREATEST(n1, n2. n3)

Возвращает наибольшее число во входном списке; например, результат вызова GREATEST (1,0, -1, 20) равен 20.

Возвращает наименьшее число во входном списке; например, результат вызова LEAST (1, 0, –1, 20) равен −1.

Возвращает натуральный логарифм числа. Значение аргумента n должно быть больше 0 или равно ему. Если вызвать LN с отрицательным аргументом, выводится сообщение об ошибке.

Возвращает логарифм заданного числа по указанному основанию. Значение аргумента n должно быть больше 0 или равно ему, а основание b должно быть больше 1. Если какой-либо из аргументов LOG не отвечает этим требованиям, выводится сообщение об ошибке.

Читайте также:  Imac вертикальная полоса на экране

Возвращает остаток от деления n на m . Остаток вычисляется по формуле, эквивалентной n-(m*FLOOR(n/m)) при совпадении знаков n и m или n-(m*CEIL(n/m)) при различающихся знаках. Например, результат вызова MOD(10, 2.8) равен 1.6. Если аргумент m равен 0, возвращается значение n . С помощью функции MOD можно быстро проверить число на четность или нечетность:

Возвращает m , если n является NaN («не числом»); в противном случае возвращается n . Возвращаемое значение относится к числовому типу аргумента, обладающему наибольшим приоритетом в следующем порядке: BINARY_DOUBLE, BINARY_FLOAT или NUMBER .

Возводит n в степень m . Если значение n отрицательно, то аргумент m должен быть целым числом. В следующем примере функция POWER используется для вычисления диапазона допустимых значений переменной типа PLS_INTEGER (от −231 −1 до 231 −1) :

Возвращает «псевдоостаток» от деления n на m. Значение вычисляется по следующей формуле:

Например, результат вызова REMAINDER(10, 2.8) равен −1.2. Сравните с функцией MOD .

Возвращает значение n , округленное до ближайшего целого. Пример:

Возвращает значение n , округленное до m разрядов. Значение m может быть отрицательным: в этом случае функция ROUND отсчитывает позиции округления влево, а не вправо от десятичной запятой. Примеры:

В табл. 1 и рис. 1 функция ROUND сравнивается с другими числовыми функциями округления и усечения.

Возвращает −1, 0 или +1, если значение n меньше нуля, равно нулю или больше нуля соответственно.

Возвращает синус угла n , заданного в радианах. Если угол задается в градусах, значение следует преобразовать в радианы (см. раздел «Тригонометрические функции»).

Возвращает гиперболический синус n . Если n — вещественное число, а i — мнимая единица, тогда связь между функциями SIN и SINH выражается следующей формулой:

Возвращает квадратный корень числа n , которое должно быть больше либо равно 0 . При отрицательном значении n выводится сообщение об ошибке.

Возвращает тангенс угла n , заданного в радианах. Если угол задается в градусах, значение следует преобразовать в радианы (см. раздел «Тригонометрические функции»).

Возвращает гиперболический тангенс n . Если n — вещественное число, а i — мнимая единица, тогда связь между функциями TAN и TANH выражается следующей формулой:

Усекает значение n до целого числа. Например, результат вызова TRUNC(10.51) равен 10.

Усекает значение n до m разрядов. Например, результат вызова TRUNC(10.789, 2) равен 10.78. Значение m может быть отрицательным: в этом случае функция TRUNC отсчитывает позиции усечения влево, а не вправо от десятичной запятой. Так, вызов TRUNC(1264, -2) дает значение 1200.

В табл. 1 и рис. 1 функция CEIL сравнивается с другими числовыми функциями округления и усечения.

Ссылка на основную публикацию
Adblock detector