如果没有为该行检索数据,是否有办法生成xml标记?
例如:
Select
firstname,
middlename,
lastname
from
Names
for xml path('name'), type)
输出:
<name>
<firstname>John</firstname>
<middlename>Jim</middlename>
<lastname>Smith</lastname>
</name>
但如果没有中间名,它会跳过xml中的那一行。
<name>
<firstname>Jane</firstname>
<lastname>Smith</lastname>
</name>
如果没有中间名数据,我正在寻找此输出:
<name>
<firstname>Jane</firstname>
<middlename />
<lastname>Smith</lastname>
</name>
这可以实现吗?
谢谢!
答案 0 :(得分:2)
您可以尝试这样的事情:
SELECT
FirstName,
MiddleName = ISNULL(MiddleName, ''),
LastName
FROM
@input
FOR XML PATH('name')
给你
<name>
<FirstName>John</FirstName>
<MiddleName></MiddleName>
<LastName>Smith</LastName>
</name>
答案 1 :(得分:0)
您可以使用XSNIL
这样执行此操作:
DECLARE @DataSource TABLE
(
[FirstName] NVARCHAR(32)
,[MiddleName] NVARCHAR(32)
,[LastName] NVARCHAR(32)
)
INSERT INTO @DataSource ([FirstName], [MiddleName], [LastName])
VALUES ('John','Smith','Tomas')
,('John',NULL,'Tomas')
,('John',NULL,NULL)
,(NULL,'Smith','Tomas')
SELECT [FirstName]
,[MiddleName]
,[LastName]
FROM @DataSource
FOR XML PATH('NAME'), ELEMENTS XSINIL, TYPE