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

SQL Firebird Discussion :

FB 2.5 convertir du binaire en varchar


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut FB 2.5 convertir du binaire en varchar
    Bonjour les gens

    J'ai une table avec une colonne BLOB SUB_TYPE 0 et je cherche une syntaxe SQL (si ça existe) pour convertir le contenu en varchar.
    Le "CAST" simple déclenche une erreur à la compilation puor cause de conversion impossible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cast(photos.photo) as varchar
    Est-ce qu'il y a une façon de faire ça svp ?

    Papy !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 656
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    ben déjà ton code pêche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cast(photos.photo  AS varchar(2024) ) as photo
    je doit avouer ne pas avoir essayé, le(s) problème(s) que tu risques de rencontrer
    - string truncation si la taille du varchar n'est pas assez importante (je n'ai pas la taille max d'un varchar en tête le matin de bonne heure)
    - perte de donnée si un /00 se trouve dans le mémo
    [Edit] pour éviter ce deuxième point , l'utilisation d'un CHAR à la place d'un VARCHAR pourrait fonctionner

    en admettant que par exemple tu ne veuilles que récupérer l'entête de la photo l'utilisation de la fonction [URL="http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-substring.html"][SUBSTRING (à consulter c'est peut être le bon choix plutôt qu'un CAST)/URL] s’avérera utile

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par Papy214 Voir le message
    Est-ce qu'il y a une façon de faire ça svp ?
    En créant une UDF qui permettrait d'éviter et/ou de contourner les bizarerries évoquées par SergioMaster...

  4. #4
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    ... Que mon "code pêche", ça, j'en avais bien conscience

    Pour la taille je pensais effectivement mettre un max mais sans être sur que ça passe à chaque fois.

    En fait, j'ai 2 tables.
    La première contient les données d'une ligne de traitement sous la forme Clé/Nom/Valeur.
    La seconde contient de 0 à 4 photos pour chaque ligne Clé/Index/Photo.
    J'utilise cette base dans un programme écrit en Delphi.
    La première solution consiste à récupérer les les données, puis dans un second temps, les photos que je transcris en chaîne grâce aux fonctions fournies par les composants UIB.
    La seconde consistait à faire 2 select avec un union pour récupérer le tout en une seule requête. C'est pour ça que je cherchais une solution de ce coté là.

    Les UDF sous Firebird, jamais fait encore. D'ailleurs, les UDF standards, ça s'installe comment avec un Firebird embeded dans Flamerobin par exemple ?

    Sinon, pour mon problème, je resterai temporairement à 2 requêtes pour ne pas retarder le projet.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 656
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    La question reste : pourquoi vouloir transformer des datas images en data 'string' ?
    un Blob (image ou pas) se charge très facilement dans un Stream , il doit même y avoir une FAQ Delphi à ce sujet

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    pourquoi du binaire ? euhh ... bonne question

    La base est utilisée en locale (embeded).
    Les données de l'image sont destinées à être envoyées ensuite à un service web sous forme de chaîne encodée en base64 (il y a peut-être d'autres solutions mais le boss a dit de faire comme ça).
    Je les stocke comme ça dans la base. Comme je suis pas trop doué avec firebird, j'ai créé une colonne de type blob sans me poser trop de question.
    Mais la question de Sergio m'a poussé à aller voir un peu plus loin que le bout de mon nez.
    Je viens de voir qu'il y a un type string pour les blob.
    Si j'utilise ce type de blob, est-ce que ça va résoudre mon problème ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 656
    Billets dans le blog
    65
    Par défaut
    Je crois que je commence à comprendre l'objectif . Mais je ne crois pas par contre que récupérer l'image en chaine de caractères soit la solution pour encoder l'image en 64 bits . A mon avis il faut récupérer le blob normalement dans un stream et encoder ce dernier (ou alors encoder directement dans la SGBD)
    par contre le comment , je n'en ai pas la moindre idée en cet instant
    La question se résumerai plutôt à comment encoder une image en 64bits. et comme en ce moment mon PC est en train de me lâcher (enfin son ventilo) je suis out of order

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/01/2007, 14h21
  2. Réponses: 3
    Dernier message: 09/05/2006, 14h35
  3. [C++.Net] convertir du binaire en hexadecimal
    Par lowrider dans le forum MFC
    Réponses: 2
    Dernier message: 01/05/2006, 14h53
  4. Convertir du binaire en Ascii
    Par brute dans le forum MFC
    Réponses: 2
    Dernier message: 28/12/2005, 09h20

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