Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2011, 15h28   #1
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 43
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2006
Messages : 43
Points : 12
Points : 12
Par défaut conversion numerique vers binaire

Bonjour,

je ne suis pas habituer à travailler sous DB2 et je vais peut être poser une question qui va sembler basique mais je cherche depuis une heure et j'ai toujours pas trouvé...

Je veux convertir en entier en binaire...
comme par exemple 130 => 1000 0010

j'ai essayé avec des CAST ou BINARY mais dans le meilleur des cas j'obtiens une valeur hexadécimal qui ne me parle pas trop et ne m'intéresse pas vraiment... voici un exemple de ce que j'obtiens

46 31 46 33 46 30 34 30 34 30 34 30 34 30 34 30 34 30 34 30 34 30

Quelqu'un aurait une solution pour cette conversion?
GregHory est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 16h20   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Cast(Entier as Int)
ou Bigint, ou Smallint, etc.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 16h44   #3
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Je pense qu'il faut écrire une UDF pour ce faire, c'est pas très compliqué à faire.
Une boucle avec division par 2 et récupération du reste avec MOD pour déterminer le bit.
Si tu fais cette fonction, n'oublies pas de la poster au cas ou d'autres personnes auraient ce même besoin.
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 17h21   #4
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 43
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2006
Messages : 43
Points : 12
Points : 12
??? je viens de tester et ça ne fais pas ce que je voulais...

peut être ai-je mal exprimé ma demande.

J'ai un champ numeric qui contient des entiers et je veux récupérer
les valeurs binaires de mes entiers.

exemple:
99 => 0110 0011
129 => 1000 0001

j'ai essayé avec Binary(valeur) ou Cast(valeur as Binary) mais cela n'a rien donné... j'obtiens des valeur hexadécimal et alors que je veux du binaire.

J'ai l'impression que ta réponse Mercure, c'est pour de l'hexa vers du numeric (en base 10)...
GregHory est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 19h17   #5
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Non, c'est bien du binaire que tu obtiens mais affiché sous forme décimale pour raison de lisibilité.


Code :
SELECT cast(Entier AS Int) AS Binaire FROM ...
La colonne "Binaire" ci-dessus contiendra la valeur de "Entier" convertie en binaire.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 19h42   #6
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Je sais pas si c'est moi qui est mal compris ou non à cause de vos histoires de CASTING à tous les deux. Je proposais dans mon post précédent une UDF, la voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CREATE FUNCTION binaire (hexa varchar(8))
       returns varchar(64)
  LANGUAGE sql
  deterministic
  no external action
  Returns NULL ON NULL Input
 
Begin
   Declare wHexa varchar(8);
   Declare i int;
   Declare wResult varchar(64);
 
 
   SET wResult = '';
   SET wHexa = strip(trim(hexa), L, '0');
   SET i = 1;
   WHILE i <= length(wHexa) DO
   SET wResult = wResult Concat 
     Case SUBSTR(wHexa, i, 1)
        When '0' then '0000'
        When '1' then '0001'
        When '2' then '0010'
        When '3' then '0011'
        When '4' then '0100'
        When '5' then '0101'
        When '6' then '0110'
        When '7' then '0111'
        When '8' then '1000'
        When '9' then '1001'
        When 'A' then '1010'
        When 'B' then '1011'
        When 'C' then '1100'
        When 'D' then '1101'
        When 'E' then '1110'
        When 'F' then '1111'
        Else ''
     End;
   SET i = i + 1;
   END WHILE;
   RETURN wResult;
End;
Ainsi

Code :
SELECT binaire(hex(130))  FROM sysibm.sysdummy1
donne

K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h16.


 
 
 
 
Partenaires

Hébergement Web