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

Développement SQL Server Discussion :

Probleme binary XML dans SQL


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut Probleme binary XML dans SQL
    Bonjour et désolé pour ce titre pas tres explicite.


    Peut-on décoder du binaire dans une variable XML sans utiliser de fonction CONVERT? Je m' explique : je veux inserer dans une variable XML la valeur 'ABW' en binaire, soit 0x414257.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     DECLARE @dataXml XML 
     
     SET @dataXml = (SELECT  0x414257 as 'Code'
     FOR XML PATH('Row'),TYPE)  
     
     SELECT @dataXml
    Le resultat ne me donne pas 'ABW' mais 'QUJX'... Je soupconne un probleme de decoding. J' ai ajouté l'option BINARY BASE64 mais sans succes. Que peut-on faire pour que mon SELECT renvoie ABW dans la balise ? Ca marche avec l'option CONVERT mais il me faut absolument trouver autre chose.

    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    Comment voulez-vous que magiquement SQL Server comprenne que vous voulez en caractères l’hexadécimal que vous avez saisi ?
    Si vous ne vouliez pas d'hexadécimal, il fallait mettre votre colonne en caractères !

    Je suis toujours étonné par la bêtise de certaines questions.....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    Moi je suis toujours étonné par le ton qu'utilisent certains "enseignants" lorsqu'ils répondent...
    Celui-la d'enseignant...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    Quand on pose des questions idiotes, il n'est pas anormal, d'obtenir des réponses du même acabit !

    Encore une fois, si vous voulez des caractères pourquoi transformer vos caractères en binaire pour les retransformer par on ne sait quelle magie (SQL Server lirait-il dans votre cerveau ?), en caractères...

    D’où la question que je pose pour compléter le débat : êtes vous masochiste ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    Je ne les transforme pas en binaire, ce sont des données qui m' arrivent en binaire, et seulement dans environ 10% des cas. Dans les autres cas c'est du varchar et le fait de les utiliser dans un datatype XML convient parfaitement pour l' utilisation que je dois en faire, par contre en binaire a part de faire un convert je ne peux pas bien les exploiter.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    Exprimez vous clairement. Vous avez une colonne dans laquelle vous avez tantôt des caractères, tantôt du binaire. Est-ce bien cela ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,
    Citation Envoyé par NicaeaCivitas Voir le message
    Le resultat ne me donne pas 'ABW' mais 'QUJX'... Je soupconne un probleme de decoding.
    Non, il n'y a pas de problème ! 'QUJX', c'est 0x414257 encodé en base 64.
    Votre XML contient donc du binaire, ce qui est logique, puisque c'est ce que vous lui donnez en entrée !


    Citation Envoyé par NicaeaCivitas Voir le message
    Ca marche avec l'option CONVERT mais il me faut absolument trouver autre chose.
    Pourquoi ?
    ça me parait assez difficile de se passer d'un transtypage, en amont ou en aval de votre XML si vous voulez au final du varchar...

    Détaillez le contexte,et expliquez nous pourquoi vous ne voulez pas transtyper...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    Grosso modo mon process est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BEGIN TRY
    INSERT INTO table1
    SELECT col1, col2, col3, col4 FROM Table2
    END TRY
    BEGIN CATCH
    declare @dataXML XML
    SET @dataXML = (SELECT col1,col2,col3,col4 FROM TABLE2
    FOR XML PATH ('Row'), TYPE, Date)
    INSERT INTO TableLogError (Id, TableName, DataInError) values (1, 'Table2', 'SELECT col1,col2,col3,col4' from Table2), getdate()
    END CATCH
    L'idee est de logger des data en erreur. Ma colonne DataInError est de format XML.

    Dans 10% des cas, je n'ai pas SELECT col1, col2, col3, col4 FROM Table2
    mais SELECT 0x414257, 0x4b4b, 0x74657374, ... from Table 2

    Je pourrais utiliser un CONVERT quand je renseigne @dataXML avec le SELECT mais si j'ai 30 colonnes dans ma table je ne me vois pas faire 30 CONVERT.
    Voila mon probleme, je ne pense pas pouvoir le decrire plus precisement.

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par NicaeaCivitas Voir le message
    ... mais si j'ai 30 colonnes dans ma table je ne me vois pas faire 30 CONVERT....
    N'auriez vous pas un problème évident de modélisation ?

    Quand je fais des audit, à partir de 20 colonnes dans une même table, je flingue !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    C'etait juste pour dire un chiffre, je pensais que vous auriez saisi le truc.
    De plus il n'y a aucun rapport avec le sujet.
    Laissez tomber.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/03/2010, 16h39
  2. Réponses: 20
    Dernier message: 22/02/2010, 15h02
  3. Champs XML dans SQL Server2005 et encodage
    Par octal dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/07/2007, 17h50

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