Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction LOG() dans Oracle

Dans Oracle, le LOG() la fonction renvoie le logarithme, base n2 , de n1 , où n2 est le premier argument et n1 est le deuxième.

Syntaxe

La syntaxe ressemble à ceci :

LOG(n2, n1)

n2 peut être n'importe quelle valeur positive autre que 0 ou 1 , et n1 est toute valeur positive.

Exemple

Voici un exemple :

SELECT LOG(16, 73)
FROM DUAL;

Résultat :

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Valeurs négatives

Les valeurs négatives entraînent une erreur "hors plage" :

SELECT LOG(-16, 73)
FROM DUAL;

Résultat :

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

Idem pour le second argument :

SELECT LOG(16, -73)
FROM DUAL;

Résultat :

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

Zéro

Passer 0 entraîne également une erreur « hors plage » :

SELECT LOG(0, 73)
FROM DUAL;

Résultat :

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

Et encore une fois, la même chose s'applique au deuxième argument :

SELECT LOG(16, 0)
FROM DUAL;

Résultat :

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

Passer 1

Passer 1 pour le deuxième argument donne 0 :

SELECT LOG(16, 1)
FROM DUAL;

Résultat :

   LOG(16,1) 
____________ 
           0

Passer 1 pour le premier argument entraîne une erreur « hors plage » :

SELECT LOG(1, 2)
FROM DUAL;

Résultat :

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

Expressions

Les arguments peuvent inclure des expressions telles que :

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

Résultat :

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

Arguments non numériques

Les arguments peuvent être n'importe quel type de données numérique ou n'importe quel type de données non numérique qui peut être implicitement converti en un type de données numérique.

Voici un exemple de ce qui se passe lorsque les arguments ne satisfont pas à ce critère :

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

Résultat :

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

Arguments nuls

LOG() renvoie null si un argument est null :

SET NULL 'null';

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

Résultat :

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

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Arguments manquants

Appel de LOG() avec le mauvais nombre d'arguments, ou sans aucun argument entraîne une erreur :

SELECT LOG()
FROM DUAL;

Résultat :

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:

Et :

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

Résultat :

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: