TSQL XML函数(TSQL XML FUNCTION)

2019-09-29 11:55发布

我需要用下面的帮助,因为我的SQL中的XML的知识是不存在的。 下面是表脚本生成表和数据。

在XML中,以“RequiredField”的名称属性的XML元素,我需要创建一个TSQL函数返回包含在价值属性的值。 请谁能帮助。

CREATE TABLE [MyTable]
( [UniqueID] INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  [Description] VARCHAR(50) NOT NULL,
  [MetaData] XML NOT NULL )   
INSERT INTO [MyTable]
( [Description], [MetaData] )
SELECT  'My Description 1', '<properties xmlns="http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd"><item name="PropertyName" value="Property1" /><item name="RequiredField" value="true" /></properties>'
UNION
SELECT  'My Description 2', '<properties xmlns="http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd"><item name="PropertyName" value="Property2" /></properties>'

正如你所看到的第二排犯规含有的元素,所以它应该返回空值。 我似乎在与查询手忙脚乱,并且还没有真正取得了很大进展,除了在命名空间的一部分,但即使我不是肯定是正确的。

因此,沿着这个东西线

CREATE FUNCTION GetRequiredFieldValue(@uniqueID INT)
    RETURNS BIT
AS
...

Answer 1:

尝试这个:

create function GetRequiredFieldValue(@uniqueID INT) returns bit
as
begin
  declare @Ret bit;

  with xmlnamespaces(default 'http://schemas.myschema.com/propertyInfo/additionalPropertyInfo.xsd')
  select @Ret = MetaData.value('(/properties/item[@name = "RequiredField"])[1]/@value', 'bit')
  from MyTable
  where UniqueID = @UniqueID;

  return @Ret;
end


文章来源: TSQL XML FUNCTION