Oracle
 sql >> база данни >  >> RDS >> Oracle

MOD() Функция в Oracle

В Oracle, MOD() функцията връща модулната операция. С други думи, той връща остатъка от първия си аргумент, разделен на втория.

Синтаксис

Синтаксисът е така:

MOD(n2, n1)

Всеки аргумент може да бъде произволен числов тип данни или всеки нечисловен тип данни, който може да бъде имплицитно преобразуван в числов тип данни.

Пример

Ето един пример:

SELECT MOD(100, 6)
FROM DUAL;

Резултат:

   MOD(100,6) 
_____________ 
            4

Oracle MOD() срещу класически модул

MOD() на Oracle функцията се държи различно от класическата математическа модулна функция, ако продуктът на n1 и n2 е отрицателен.

Ето пример, който демонстрира как всеки от тях се различава:

SELECT 
    MOD(100, 6) AS "Oracle MOD()",
    100 - 6 * FLOOR(100/6) AS "Classical"
FROM DUAL

UNION ALL

SELECT 
    MOD(100, -6),
    100 - -6 * FLOOR(100/-6)
FROM DUAL

UNION ALL

SELECT 
    MOD(-100, 6),
    -100 - 6 * FLOOR(-100/6)
FROM DUAL

UNION ALL

SELECT 
    MOD(-100, -6),
    -100 - -6 * FLOOR(-100/-6)
FROM DUAL;

Резултат:

Oracle MOD()  Classical
____________  _________
           4	      4
           4	     -2
          -4	      2
          -4	     -4

Нечислови аргументи

Аргументите могат да бъдат всеки числов тип данни или всеки нечисловен тип данни, които могат да бъдат имплицитно преобразувани в числов тип данни.

Ето пример за това какво се случва, когато аргументите не отговарят на тези критерии:

SELECT MOD('Homer', 'Symptom')
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT MOD('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Нулеви аргументи

MOD() връща null ако някой аргумент е null :

SET NULL 'null';

SELECT 
    MOD(null, 16),
    MOD(1024, null),
    MOD(null, null)
FROM DUAL;

Резултат:

   MOD(NULL,16)    MOD(1024,NULL)    MOD(NULL,NULL) 
_______________ _________________ _________________ 
           null              null              null 

По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Липсващи аргументи

Извикване на MOD() с грешен брой аргументи или без никакви аргументи води до грешка:

SELECT MOD()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT MOD()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

И:

SELECT MOD(10, 2, 3)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT MOD(10, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NHibernate съпоставяне за Oracle INTERVAL DAY TO SECOND тип данни

  2. Как да върнете корекцията след неуспешна фаза на превключване в R12.2

  3. Опресняване / Актуализиране на екран на формуляр в Oracle D2k Forms 6i

  4. Матрица на поддържаните версии на Oracle

  5. TNSPING ОК, но sqlplus дава ORA-12154?