sql >> Database >  >> RDS >> Oracle

LOG() Functie in Oracle

In Oracle, de LOG() functie retourneert de logaritme, grondtal n2 , van n1 , waarbij n2 is het eerste argument en n1 is de tweede.

Syntaxis

De syntaxis gaat als volgt:

LOG(n2, n1)

Waar n2 kan elke positieve waarde zijn behalve 0 of 1 , en n1 is een positieve waarde.

Voorbeeld

Hier is een voorbeeld:

SELECT LOG(16, 73)
FROM DUAL;

Resultaat:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Negatieve waarden

Negatieve waarden resulteren in een "buiten bereik"-fout:

SELECT LOG(-16, 73)
FROM DUAL;

Resultaat:

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

Hetzelfde voor het tweede argument:

SELECT LOG(16, -73)
FROM DUAL;

Resultaat:

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

Nul

Passen 0 resulteert ook in een "buiten bereik"-fout:

SELECT LOG(0, 73)
FROM DUAL;

Resultaat:

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

En nogmaals, hetzelfde geldt voor het tweede argument:

SELECT LOG(16, 0)
FROM DUAL;

Resultaat:

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

Passen 1

Passen voor 1 voor het tweede argument resulteert in 0 :

SELECT LOG(16, 1)
FROM DUAL;

Resultaat:

   LOG(16,1) 
____________ 
           0

Passen voor 1 voor het eerste argument resulteert in een "buiten bereik"-fout:

SELECT LOG(1, 2)
FROM DUAL;

Resultaat:

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

Uitdrukkingen

De argumenten kunnen uitdrukkingen als deze bevatten:

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

Resultaat:

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

Niet-numerieke argumenten

De argumenten kunnen elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.

Hier is een voorbeeld van wat er gebeurt als de argumenten niet aan die criteria voldoen:

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

Resultaat:

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

Nullargumenten

LOG() retourneert null als een argument null is :

SET NULL 'null';

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

Resultaat:

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

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Ontbrekende argumenten

LOG() . aanroepen met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:

SELECT LOG()
FROM DUAL;

Resultaat:

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:

En:

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

Resultaat:

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. PDO laat de laatste ID invoegen

  2. Gegevens invoegen om op te nemen in sqlite

  3. SQL Server gebruiken als een DB-wachtrij met meerdere clients

  4. Hoe controleer ik of een rij bestaat in MySQL? (d.w.z. controleren of er een e-mail bestaat in MySQL)