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

Langage SQL Discussion :

Update sur un champ hexadécimal


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Update sur un champ hexadécimal
    Bonjour,
    J'ai un champ hexadécimal qui ressemble a : 1a2z3e4rt5f6y2z1190530f404040

    Si vous remarquez bien après le z c'est la date du jour.
    J'ai besoin de mettre a jour cette date via une variable préalablement alimenté.
    Auriez vous une idée sur comment mettre a jour la date svp.
    PS : je suis sur un système IBM DB2

    D'avance merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Bonjour,
    Si ta colonne contient un z (et un r, un t, un y...), ce n'est pas du tout une valeur hexadécimale, mais alphanumérique, ce qui n'est pas du tout la même chose.
    Ici ton problème est que la valeur n'est pas atomique, ta colonne contient visiblement plusieurs valeurs, c'est le début des problèmes…
    Tu nous indiques que la date est après le 'z', or il y en a 2 dans la chaines. Ce n'est donc pas un critères pour isoler la date.

    Est-ce que la longueur de la colonne est fixe ? Est-ce qu'il y a toujours 15 caractères avant la date, et 7 après ?
    Si c'est bien le cas, il "suffit" de prendre les 15 premiers caractères, les 7 derniers et d'ajouter la date formatée au milieu.
    Il faut donc regarder les fonctions de gestion des chaines dans ton SGBD (non précisé).

    Tatayo.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci pour votre retour, je me suis mal exprimé et je vais compléter ma demande.
    Le champ ARG est défini sur 16.
    Lorsque je fais select char(hex(arg)) j'obtiens exactement
    C5E4D9C5D6D5C91401190531F404040
    vers la fin avant le F j'ai la date 1190531.
    J'ai besoin de faire un update de cette date via une variable préalablement alimenté.
    D'avance merci pour votre aide
    Cordialement

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Pour pouvoir mettre à jour une colonne dans une table, il faut en connaitre la valeur "non transformée".
    Quel est le type de la colonne ? Si c'est un entier, il faut donc:
    1. Récupérer la valeur hexa sous forme de chaine, comme tu l'as fait
    2. Remplacer la date, en utilisant les fonctions de gestion des chaines
    3. Recalculer la valeur entière qui correspond à cette nouvelle valeur hexa

    Je doute que ce soit facilement faisable avec une "simple" requête SQL, à moins que ton SGBD (toujours inconnu) propose des fonctions idoines (chaines => hexa => entier).
    Tu peux trouver un exemple ici pour SqlServer.

    Tatayo.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le type du champ est un char.
    Je travail sur AS400 , IBM.
    Cela a priori va être très compliqué apparemment.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 673
    Points
    39 673
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par silfrides Voir le message
    vers la fin avant le F j'ai la date 1190531.
    ce n'est pas une date ca !


    Citation Envoyé par silfrides Voir le message
    Le type du champ est un char.
    Il n'y a pas de champ dans une base de données il y a des colonnes et ces colonnes doivent avoir un type adapté au contenu, or, le type char n'est absolument pas prévu pour stocker une date.
    Si vous en avez la possibilité modifiez la table concernée pour supprimer les colonnes poubelles qui contiennent plusieurs attributs, à remplacer par autant de colonnes que nécessaire avec un type adapté.
    Dans la négative, il faut passer par des fonctions de conversion de type, ce qui nuit gravement aux performances et risque de planter si le contenu n'est pas tel qu'attendu (dans un type char, il peut y avoir n'importe quoi d'autre qu'une date, la preuve, l'exemple que vous avez fourni n'en est pas une !)

Discussions similaires

  1. Update sur un champ particulier
    Par Pfeffer dans le forum Oracle
    Réponses: 7
    Dernier message: 31/10/2006, 13h53
  2. Update sur les champs d'un formulaire filtré
    Par Tatoine dans le forum Access
    Réponses: 4
    Dernier message: 21/07/2006, 11h46
  3. Problème d'UPDATE sur un champ d'une table MyISAM
    Par alouette dans le forum Requêtes
    Réponses: 6
    Dernier message: 13/07/2006, 20h17
  4. [SQL Server] Requete update sur 2 champs
    Par galou10 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/02/2006, 20h22
  5. Probleme d'UPDATE sur un champ text
    Par Nip dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/07/2005, 11h35

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