IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sybase Discussion :

[TSQL]convertir un int en un hexadecimal de 9 caractères


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Par défaut [TSQL]convertir un int en un hexadecimal de 9 caractères
    J'ai besoin de convertir des entiers en des hexadecimaux de 9 caractères.
    J'ai testé la fonction INTTOHEX()

    par exemple:

    SELECT INTTOHEX(100)
    J'obtiens 00000064

    la conversion fonctionne bien...mais comment obtenir un hexadecimal sur 9 caractères en passant sql (j'ai pas moyen de faire autrement)

    c'est à dire obtenir 000000640

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Je comprends pas très bien pourquoi tu veux obtenir 000000640 plutôt que 00000064 - vu que 640 hexa != 100 decimal...

    Mais tu peux évidemment faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select inttohex(100)+'0';
     
     ---------
     000000640
    (mais à mon avis je n'ai pas compris la question :-)

    Michael

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Par défaut
    oui en fait j'ai donné 100 comme exemple.
    mais je peux avoir un hexadecimal de taille allant de 1 à 9
    dans le cas ou sa taille est inférieure à neuf, il faut que je complète par des 0

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Il faut complèter à gauche ou à droite ?

    Si c'est à gauche (ce qui me semble plus logique):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select replicate('0', 9 - char_length(inttohex(data))) + inttohex(data)
    où "data" est la valeur décimale à convertir.

    Michael

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Par défaut
    merci beaucoup...

    Autre question,
    en fait ce n'est pas un int que je dois convertir en hexadecimal...mais un numeric(18)

    et ca passe pas pour les int dont la longueur est supèrieure à 8

    par exemple

    select INTTOHEX(96258588887) donne
    Error: com.sybase.jdbc3.jdbc.SybSQLException: Arithmetic overflow during implicit conversion of NUMERIC value '96258588887' to a INT field .
    , SQL State: ZZZZZ, Error Code: 247


    Y a t il une autre méthode pour convertir n'importe quel entier en hexadecimal.

    j'ai testé

    SELECT CONVERT(VARBINARY(8), 16777215)
    et ca me donne 46 46 46 46 46 46 30 30
    :-(

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Est-ce que tu serais par hasard en ASE 15 ?

    Si oui tu peux utiliser la fonction biginttohex().

    Autrement il faut que je cherche un peu...

    Michael

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Citation Envoyé par antigone

    Y a t il une autre méthode pour convertir n'importe quel entier en hexadecimal.

    j'ai testé

    SELECT CONVERT(VARBINARY(8), 16777215)

    et ca me donne 46 46 46 46 46 46 30 30
    :-(
    Tu dois être sur du Windows ou autre platforme "small-endian".

    Si tu passe par un convert(numeric) cela devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [24] WIN_TEST.master.1> select @@version;
     
     ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     Adaptive Server Enterprise/12.5.3/EBF 12875 ESD#4/P/NT (IX86)/OS 4.0/ase1253/1/32-bit/OPT/Thu Sep 08 11:27:35 2005 
     
    (1 row affected)
    [25] WIN_TEST.master.1> SELECT bintostr(CONVERT(VARBINARY, convert(numeric, 16777215)));
     
     ------------------------------------------------------------
     000000000000ffffff
     
    (1 row affected)
    ce qui semble correcte.

    Michael

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/04/2007, 16h40
  2. Convertir un int en char
    Par heruwenli dans le forum C++
    Réponses: 3
    Dernier message: 06/02/2007, 13h41
  3. Comparer 2 Char / Convertir Char -> Int
    Par mbk-w dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/06/2006, 11h09
  4. Convertir un (int) en (uint)
    Par Remi163 dans le forum MFC
    Réponses: 4
    Dernier message: 28/04/2006, 18h53
  5. Convertir un Int en Hexadécimal
    Par Benjy dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/10/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo