2015-06-03 56 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