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

MS SQL Server Discussion :

tester si colonne xml is empty


Sujet :

MS SQL Server

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut tester si colonne xml is empty
    Bonjour

    J'aimerais pouvoir faire un select des rows ayant un champ xml NULL ou Vide

    is null fonctionne
    mais > '' me donne une erreur

    existe-t-il une formule magique ?

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    bonjour,

    Pouvez vous nous donner un jeu de données pour votere cas ?

    Merci

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour MikeDavem

    Mon cas n'est pas relatif au jeu de donnée mais a la syntaxe necessaire pour tester une colonne de type XML

    L'intention etant de detecter les row ayant une valeur nulle ou vide pour cette colonne

    J'ai fini par trouver


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     where MaCol is not null and (DATALENGTH(MaCol) < 5)

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je ne comprends pas votre réponse. Vous voulez détecter les colonnes de type XML qui sont NULL (ou absences de valeurs)

    J'aimerais pouvoir faire un select des rows ayant un champ xml NULL ou Vide
    ... et vous dites que la solution suivante vous permet de faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
    Pour moi vous n'aurez jamais ce que vous demandez initialement.

    ++

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Pour etre plus precis et pour vous aider a comprendre la difficulté originale

    L'objetif est de tester si un champ XML est

    - NULL (on non null)
    et Vide (ou non Vide)

    Donc peu importe que le test soit positif ou negatif !!

    Le test que j'ai mis en place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
    Permet d'isoler les champs non null n'ayant pas un contenu signifiant

    La difficulté résidait dans le fait que SQL Serveur n'accepte pas les operateur
    >,< , <> sur un champ XML

    Je cherchais donc la maniere de tester si ce champ xml avait ou non un contenu signifiant autre que NULL

    La methode qui permet de faire cela est la fonction Ensuite le choix de la longueur en operande depend evidement du contenu
    Dans mon cas il s'est averé que certains rows contenaient ente 0 et 5 blanc

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Dans ce cas je pense que vous pouvez utiliser la méthode exist().

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DECLARE @T TABLE
    (
     col XML NULL
    )
     
    INSERT @T VALUES (NULL)
    INSERT @T VALUES ('<root><a>element</a></root>')
    INSERT @T VALUES ('<bb><a>element</a></bb>')
    INSERT @T VALUES ('')
    INSERT @T VALUES ('    ')
    INSERT @T VALUES (' jjlk')
     
    SELECT * FROM @T
    WHERE col.exist('*') = 1
    ++

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Au passage écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
    Est équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DATALENGTH(MaCol) < 5
    NULL n'est pas une valeur, donc il n'a pas de longueur !

    @++

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    NULL n'est pas une valeur, donc il n'a pas de longueur !
    Merci elsuket
    Mais j'ai pris l'habitude de systematiquement tester les NULL explicitement

    Ca evite parfois quelques résultat inattendus

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Dans ce cas je pense que vous pouvez utiliser la méthode exist().
    Merci MikeDavem
    Je regarde ce que ca donne demain

Discussions similaires

  1. [SOAP Proxy] outil pour tester le contenu XML des message SOAP
    Par evan.caballero dans le forum Services Web
    Réponses: 3
    Dernier message: 26/01/2010, 20h57
  2. Tester existence Attribut xml
    Par inspecteur rick dans le forum Débuter
    Réponses: 2
    Dernier message: 23/12/2009, 15h43
  3. tester un fichier XML en java
    Par chebmo1986 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 14/04/2009, 18h08
  4. Réponses: 10
    Dernier message: 05/06/2008, 13h53
  5. [DOM][XML] Parser et tester un document XML
    Par ninox_ dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2007, 14h03

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