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)
Où 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: