Élément vraiment vide avec serveur SQL pour directive xml
-
05-07-2019 - |
Question
Comment créer un élément xml vraiment vide avec la directive for xml dans le serveur SQL (2005)?
Exemple:
select
''
for xml path('element'), root('elements')
Sorties:
<elements><element></element></elements>
Mais ce que je veux vraiment, c'est:
<elements><element /></elements>
La solution
Ajoutez la directive type, puis exécutez-la dans une sous-requête.
Comme ceci:
select
(
select
''
for xml path('element'), type
)
for xml path('elements')
Autres conseils
select
null
for xml path('element'), root('elements')
Vous devez uniquement savoir si la valeur est null, par exemple: ISNULL (Champ, '')
Comme ceci:
DECLARE @T table
(
ID int identity primary key,
Name nvarchar(10)
)
INSERT INTO @T (Name)
SELECT 'Name1'
UNION ALL
SELECT NULL
-- @Result1
SELECT ID AS Id
,ISNULL(Name, '') AS Name
FROM @T
FOR XML PATH ('Person')
-- @Result2
DECLARE @Result2 XML = ( SELECT
ID AS Id
,ISNULL(Name, '') AS Name
FROM @T
FOR XML PATH ('Person'))
SELECT @Result2;
Résultat1:
<Person>
<Id>1</Id>
<Name>Name1</Name>
</Person>
<Person>
<Id>2</Id>
<Name></Name>
</Person>
Résultat 2:
<Person>
<Id>1</Id>
<Name>Name1</Name>
</Person>
<Person>
<Id>2</Id>
<Name />
</Person>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow