BITAND qui "BITAND pas" ?
Bonjour,
j'utilise cette fonction de la manière suivante :
Code:
1 2 3
| decode(BITAND(CERDGE,1),1,1,0) as REG01,
decode(BITAND(CERDGE,10),10,1,0) as REG02,
decode(BITAND(CERDGE,100),100,1,0) as REG03, |
L'objectif : si j'ai un CERDGE = 110 je sais que les règles 02 et 03 ont été violées. Si j'ai 100, seule la règle 03 à été violée.
Sauf que dans les faits, cela fonctionne pour un CERDGE = 100 mais pour toutes combinaisons de plusieurs règles, cela ne marche pas.
Est-ce que quelqu'un pourrait me tuyauter où l'erreur se situe ?
Merci d'avance
Mederik
Il y a 10 types de gens dans le monde. Ceux qui parlent le binaire, et les autres.
BITAND, ca fonctionne avec des nombres binaires :lol:
Code:
1 2 3 4 5 6 7 8 9 10 11
| TMP@minilhc >select bitand(104,100) from dual;
BITAND(104,100)
---------------
96
TMP@minilhc >select bitand(103,100) from dual;
BITAND(103,100)
---------------
100 |
Au lieu de prendre 1,10 et 100, vous devez utiliser 1,2,4. Des nombres ninaires en somme. :ccool:
Code:
1 2 3 4 5
| TMP@minilhc >select bitand(6,1) as lsb ,bitand(6,2) as BIT, bitand(6,4) as msb from dual;
LSB BIT MSB
---------- ---------- ----------
0 2 4 |