Salut tout le monde,

Je viens vers vous car je n'arrive pas à trouver une fonction SQL qui permette d'obtenir la représentation décimale d'un nombre depuis sa représentation binaire.
L'inverse est vrai avec BIN_TO_NUM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SQL> select bin_to_num(1,1,1) from dual;
BIN_TO_NUM(1,1,1)
-----------------
                7
mais pour avoir l'opération inverse, je dois recourir à un truc trouvé sur le net :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SQL> SELECT LISTAGG(SIGN(BITAND(&&nb, POWER(2,LEVEL-1))),'') WITHIN GROUP(ORDER BY LEVEL DESC) bin FROM dual CONNECT BY POWER(2, LEVEL-1)<=&nb;
Entrez une valeur pour nb : 7
ancien   1 : SELECT LISTAGG(SIGN(BITAND(&&nb, POWER(2,LEVEL-1))),'') WITHIN GROUP(ORDER BY LEVEL DESC) bin FROM dual CONNECT BY POWER(2, LEVEL-1)<=&nb
nouveau   1 : SELECT LISTAGG(SIGN(BITAND(7, POWER(2,LEVEL-1))),'') WITHIN GROUP(ORDER BY LEVEL DESC) bin FROM dual CONNECT BY POWER(2, LEVEL-1)<=7
BIN
--------------------------------------------------------------------------------
111

Vous n'auriez pas plus simple?

Visiblement c'est parce que le type BINARY n'existe pas sous oracle (ainsi que BOOLEAN mais on s'écarte du sujet) que cette conversion ne va pas de soi...