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
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
bonjour,
Pouvez vous nous donner un jeu de données pour votere cas ?
Merci
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)
Je ne comprends pas votre réponse. Vous voulez détecter les colonnes de type XML qui sont NULL (ou absences de valeurs)
... et vous dites que la solution suivante vous permet de faire cela :J'aimerais pouvoir faire un select des rows ayant un champ xml NULL ou Vide
Pour moi vous n'aurez jamais ce que vous demandez initialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
++
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
Permet d'isoler les champs non null n'ayant pas un contenu signifiant
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
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 fonctionEnsuite le choix de la longueur en operande depend evidement du contenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part DATALENGTH(MaCol)
Dans mon cas il s'est averé que certains rows contenaient ente 0 et 5 blanc
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
Bonjour,
Au passage écrire :
Est équivalent à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE MaCol IS NOT NULL AND (DATALENGTH(MaCol) < 5)
NULL n'est pas une valeur, donc il n'a pas de longueur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE DATALENGTH(MaCol) < 5
@++
Merci elsuketNULL n'est pas une valeur, donc il n'a pas de longueur !
Mais j'ai pris l'habitude de systematiquement tester les NULL explicitement
Ca evite parfois quelques résultat inattendus
Merci MikeDavemDans ce cas je pense que vous pouvez utiliser la méthode exist().
Je regarde ce que ca donne demain
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager