在Microsoft SQL Server 2008中,如何生成特定的XML标记?

时间:2014-06-09 21:03:53

标签: sql-server xml

我不熟悉从SQL生成XML代码。 在做了一些研究之后,我想我需要使用如下语句:FOR XML EXPLICITFOR XML RAWFOR XML AUTO,但当我在AUTO上运行时,输出就是一行像这样:

<student externalStudentID1="100003" lastName="Smith" externalSiteId="Place"/>

这接近我的需要,但它必须具有特定的开始和结束标签,如:

<student externalStudentID1="100003" externalSiteId="Place"></student>

当我尝试使用ELEMENTSRAWPATH时,我最终为所有元素打开和关闭标记。 EXPLICIT只是抛出错误,需要重写整个select语句。有人可以帮忙吗?这是我的代码:

SELECT [externalStudentId1] as StudId, (    
SELECT [externalStudentId1],[externalStudentId2],[socialSecurityNumber],sbl.fn_ToSblDate ( [birthDate]) as [birthDate],[lastName],[firstName],[middleName],[informalName],[nameTitle] ,[nameSuffix],[externalCampusId],[externalSiteId]   
FROM sbl.[student] as student     
WHERE student.externalStudentId1=stud.externalStudentId1   
FOR XML Auto   
) as SblData   
FROM sbl.[student] as stud   
WHERE stud.[ExcludeFromSbl] =0 

1 个答案:

答案 0 :(得分:0)

要生成打开和关闭标记,您可以添加空的内部文本节点。例如。

SELECT
    externalStudentId1 AS '@externalStudentID1',
    externalSiteId AS '@externalSiteId',
    ...
    '' AS 'text()' -- This empty string as inner text is added
FROM
    sbl.[student]
FOR
    XML PATH('student')