【问题标题】:Extracting XML field in SQL Server在 SQL Server 中提取 XML 字段
【发布时间】:2015-06-04 10:33:40
【问题描述】:

我在包含多种类型数据的MIWOD 表中有fldxml 列。如何显示[fldxml] 列值,如下所示?

 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>

我想要这样的东西

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

我尝试使用以下

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

但我收到以下错误

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

【问题讨论】:

    标签: sql-server xml crystal-reports-2008


    【解决方案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)
    

    【讨论】:

    • 非常感谢!!!!作品很棒!我如何在 Crystal Report 中应用相同的方法,有什么想法吗?我想在我的报告中显示这两个字段
    • 我也想代替SET @stuff = '&lt;fields&gt;&lt;field1&gt;1&lt;/field1&gt;&lt;field2&gt;C:\Users\Kinfe\Documents\LETTUCE_WHEEL.pdf&lt;/field2&gt;&lt;/fields&gt;' 我想使用类似SET @stuff = 'fldXml' 的字段本身。谢谢!!
    • 我只是使用了一个 xml 变量,因此任何人都可以测试代码。如果 xml 在列中,则可以像这样查询它(希望这可以帮助您使用 Crystal Report,不幸的是我对此一无所知):create table Junk(id int, CoolData xml); insert into Junk values (1, '&lt;fields&gt;&lt;field1&gt;1&lt;/field1&gt;&lt;field2&gt;C:\Users\Kinfe\Documents\LETTUCE_WHEEL.pdf&lt;/field2&gt;&lt;/fields&gt;'); SELECT CoolData.value('(fields/field1)[1]', 'int') [**Routing:**], CoolData.value('(fields/field2)[1]', 'nvarchar(max)') [**Drawing:**] FROM Junk WHERE id = 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多