Oracle
 sql >> Database >  >> RDS >> Oracle

LOG() Funzione in Oracle

In Oracle, il LOG() la funzione restituisce il logaritmo, in base n2 , di n1 , dove n2 è il primo argomento e n1 è il secondo.

Sintassi

La sintassi è questa:

LOG(n2, n1)

Dove n2 può essere qualsiasi valore positivo diverso da 0 o 1 e n1 è un valore positivo.

Esempio

Ecco un esempio:

SELECT LOG(16, 73)
FROM DUAL;

Risultato:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Valori negativi

I valori negativi generano un errore "fuori intervallo":

SELECT LOG(-16, 73)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG(-16, 73)
FROM DUAL
Error report -
ORA-01428: argument '-16' is out of range

Lo stesso per il secondo argomento:

SELECT LOG(16, -73)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG(16, -73)
FROM DUAL
Error report -
ORA-01428: argument '-73' is out of range

Zero

Passaggio di 0 genera anche un errore "fuori intervallo":

SELECT LOG(0, 73)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG(0, 73)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

E ancora, lo stesso vale per il secondo argomento:

SELECT LOG(16, 0)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG(16, 0)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

Passato 1

Passaggio di 1 per il secondo argomento risulta 0 :

SELECT LOG(16, 1)
FROM DUAL;

Risultato:

   LOG(16,1) 
____________ 
           0

Passaggio di 1 per il primo argomento risulta un errore "fuori intervallo":

SELECT LOG(1, 2)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG(1, 2)
FROM DUAL
Error report -
ORA-01428: argument '1' is out of range

Espressioni

Gli argomenti possono includere espressioni come questa:

SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;

Risultato:

                            LOG(10+6,12*30) 
___________________________________________ 
   2.12296327408241867769444932934625579835 

Argomenti non numerici

Gli argomenti possono essere qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico.

Ecco un esempio di cosa succede quando gli argomenti non soddisfano quel criterio:

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

Risultato:

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

Argomenti nulli

LOG() restituisce null se un argomento è null :

SET NULL 'null';

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

Risultato:

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

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Argomenti mancanti

Chiamando LOG() con il numero errato di argomenti o senza argomenti genera un errore:

SELECT LOG()
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOG()
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:

E:

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

Risultato:

Error starting at line : 1 in command -
SELECT LOG(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: