2015-06-03 57 views
0

我在MIWOD表中包含fldxml列,其中包含多种类型的数据。如何显示[fldxml]列值如下所示?在SQL Server中提取XML字段

Routing  Drawing 
     1  C:\Users\XXX\Documents\LETTUCE_WHEEL.pdf 

这里是如何[fldxml]看起来像

<fields> 
    <field1>1</field1> 
    <field2>C:\Users\XXX\Documents\LETTUCE_WHEEL.pdf</field2> 
</fields> 

我想用以下

SELECT 
    MIWOD.fldXml('(field1/text())[1]', 'varchar(50)') as Routing, 
    MIWOD.fldXml('(field1/text())[1]', 'varchar(50)') as Routing 
FROM 
    [MISAMPCO].[dbo].[MIWOD] 

得到这样的

Routing  Drawing: 
    1   C:\Users\XXX\Documents\LETTUCE_WHEEL.pdf 

我试过,但我得到以下错误

找不到列“MIWOD”或用户定义的函数或集合“MIWOD.fldXml”,或名称不明确。

回答

1
DECLARE @stuff xml 

SET @stuff = '<fields><field1>1</field1><field2>C:\Users\Kinfe\Documents\LETTUCE_WHEEL.pdf</field2></fields>' 

SELECT 
    Child.value('field1[1]', 'int') [**Routing:**], 
    Child.value('field2[1]', 'nvarchar(max)') [**Drawing:**] 
FROM 
    @stuff.nodes('fields[1]') as N(Child) 
+0

非常感谢!!!!作品太棒了!我怎么能应用相同的水晶报告,任何想法?我想在我的报告 – Aaron

+0

显示这两个领域我也想,而不是'SET @stuff =“ C:\用户\ Kinfe \文档\ LETTUCE_WHEEL.pdf”'我想使用像' SET @stuff ='fldXml''该字段本身。谢谢!! – Aaron

+0

我刚刚使用了一个xml变量,所以任何人都可以测试代码。如果xml在列中,可以像这样查询它(希望这可以帮助您使用Crystal Report,这是我不知道的一个不幸的事情): 'create table Junk(id int,CoolData xml); 插入垃圾值(1,' C:\ Users \ Kinfe \ Documents \ LETTUCE_WHEEL.pdf'); CoolData.value('(fields/field1)[1]','int')[** Routing:**], CoolData.value('(fields/field2)[1]','nvarchar (最大)')[**绘制:**] 从垃圾WHERE id = 1' – Anssssss