2013-11-01 66 views
0

此处的目标是从SQL Server 2008表列中提取属性值。该列是一种XML数据类型,当然,名为'ProductName'。这里的样本数据从SQL Server 2008中的XML字段提取简单属性表

<locale en-US="My Text" /> 

而且这里是我在获得“我的文字”

SELECT ProductName.value('/@locale en-US', 'nvarchar(max)') 
AS ProductName FROM MyTable 

感谢和好运的最新尝试!

回答

1
SELECT ProductName.value('(/locale/@en-US)[1]', 'nvarchar(max)') AS ProductName 
FROM MyTable 
+0

是的!谢谢E.K. – soulia

0
declare @xml xml = 
'<root> 
    <locale en-US="My Text" /> 
</root>' 

select @xml.value('(/root/locale/@en-US)[1]', 'nvarchar(max)') 

结果

我的文本

1

试试这个:

SELECT 
    ProductName.value('(/locale/@en-US)[1]', 'varchar(50)') 
FROM 
    dbo.MyTable 

XPath表达式的/locale部分<locale>元素相匹配,而@en-US部Ma提供该XML元素的en-US属性

+1

,谢谢marc_s的澄清! – soulia