【发布时间】:2020-06-04 08:15:51
【问题描述】:
技术:T-SQL、XML、XQuery
我在具有架构部分和数据部分的数据库表中有一个 XML @variable。我只想增加模式部分并为其创建一个 XML 模式集合。看来 XQuery 将是最快的方法。如何在以下文件中指定开始标签和结束标签(我只想提取<xs:schema xmlns和</xs:schema>之间的所有内容?
CREATE FUNCTION [etl].[ufn_GetXmlSchema]
(
@DataLakeBlobId uniqueidentifier
)
RETURNS xml
AS
BEGIN
DECLARE @XmlSchema xml
,@XmlData xml
SET @XmlSchema = ( SELECT [XmlData]
FROM [landing].[v_tbForm] WITH (NOLOCK)
WHERE [DataLakeBlobId] = @DataLakeBlobId
)
--RETURN @XmlSchema.query('</xs:schema>')-- missing matching begin tag
--RETURN @XmlSchema.query('<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">')-- Expected end tag 'xs:schema'
RETURN @XmlSchema.query('<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"></xs:schema>')-- nothing in between was returned
END
GO
SELECT [etl].[ufn_GetXmlSchema]('A257667D-C3AA-471C-9F82-91FA35181833')
感谢任何帮助。
【问题讨论】:
-
在提出问题时,您需要提供一个最小的、可重现的示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT 语句。 (2) 你需要做什么,即逻辑,以及你的代码实现。 (3) 基于样本数据的期望输出。 (4) 你的 SQL Server 版本 (SELECT @@version;)
标签: sql-server xml tsql xsd xquery