sql >> Databasteknik >  >> RDS >> Oracle

LOG() Funktion i Oracle

I Oracle, LOG() funktion returnerar logaritmen, bas n2 , av n1 , där n2 är det första argumentet och n1 är den andra.

Syntax

Syntaxen ser ut så här:

LOG(n2, n1)

Där n2 kan vara vilket positivt värde som helst än 0 eller 1 och n1 är något positivt värde.

Exempel

Här är ett exempel:

SELECT LOG(16, 73)
FROM DUAL;

Resultat:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Negativa värden

Negativa värden resulterar i felet "utom intervallet":

SELECT LOG(-16, 73)
FROM DUAL;

Resultat:

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

Samma sak för det andra argumentet:

SELECT LOG(16, -73)
FROM DUAL;

Resultat:

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

Noll

Skickar 0 resulterar också i felet "utanför intervallet":

SELECT LOG(0, 73)
FROM DUAL;

Resultat:

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

Och återigen, detsamma gäller för det andra argumentet:

SELECT LOG(16, 0)
FROM DUAL;

Resultat:

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

Godkänd 1

Skickar 1 för det andra argumentet resulterar i 0 :

SELECT LOG(16, 1)
FROM DUAL;

Resultat:

   LOG(16,1) 
____________ 
           0

Skickar 1 för det första argumentet resulterar i felet "utom intervallet":

SELECT LOG(1, 2)
FROM DUAL;

Resultat:

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

Uttryck

Argumenten kan innehålla uttryck som detta:

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

Resultat:

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

Icke-numeriska argument

Argumenten kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp.

Här är ett exempel på vad som händer när argumenten inte uppfyller dessa kriterier:

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

Resultat:

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

Nollargument

LOG() returnerar null om något argument är null :

SET NULL 'null';

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

Resultat:

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

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Argument saknas

Anropar LOG() med fel antal argument, eller utan några argument resulterar i ett fel:

SELECT LOG()
FROM DUAL;

Resultat:

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:

Och:

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

Resultat:

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:

  1. Native Library sqljdbc_auth.dll har redan laddats i en annan klassladdare

  2. SQL Server ANSI_NULLS förklaras

  3. gå med kommaavgränsad datakolumn

  4. Lighty för Oracle