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: