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

LOG() Funktion i Oracle

I Oracle er LOG() funktion returnerer logaritmen, grundtal n2 , af n1 , hvor n2 er det første argument og n1 er den anden.

Syntaks

Syntaksen ser sådan ud:

LOG(n2, n1)

Hvor n2 kan være enhver anden positiv værdi end 0 eller 1 , og n1 er enhver positiv værdi.

Eksempel

Her er et eksempel:

SELECT LOG(16, 73)
FROM DUAL;

Resultat:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Negative værdier

Negative værdier resulterer i fejlen "uden for område":

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

Samme for det andet argument:

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

Nul

Sender 0 resulterer også i en "uden for rækkevidde"-fejl:

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

Og igen, det samme gælder for det andet argument:

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

Bestået 1

Sender 1 for det andet argument resulterer i 0 :

SELECT LOG(16, 1)
FROM DUAL;

Resultat:

   LOG(16,1) 
____________ 
           0

Sender 1 for det første argument resulterer i en "uden for rækkevidde"-fejl:

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

Udtryk

Argumenterne kan indeholde udtryk som dette:

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

Resultat:

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

Ikke-numeriske argumenter

Argumenterne kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.

Her er et eksempel på, hvad der sker, når argumenterne ikke opfylder disse 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

Nul-argumenter

LOG() returnerer null hvis et argument er 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Manglende argumenter

Kalder LOG() med det forkerte antal argumenter eller uden argumenter resulterer i en fejl:

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:

Og:

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. Lær at gemme og analysere dokumenter på Windows filsystem med SQL Server Semantic Search – Del 1

  2. Kan jeg bruge en stream til at INDSÆTTE eller OPDATERE en række i SQL Server (C#)?

  3. Sådan opretter du et rullebart, opdaterbart ResultSet-objekt i JDBC

  4. UNIX_TIMESTAMP i SQL Server