【发布时间】:2015-09-16 13:20:17
【问题描述】:
我已阅读有关此主题的所有其他帖子,但没有一个对我有用。这个是最近的CONVERTING SQL NVARCHAR(MAX) TO XML
因此,我修改了该代码以尝试适应我的情况。我有一个 nvarchar(max) 列,其中包含作为一个大长字符串的 XML 数据。这不是我的数据库,所以我无法将数据类型更改为 XML。下一个最好的事情是创建一个查询并将其转换为 XML。这是我的代码:
IF OBJECT_ID('tempdb..#XML_Dummy') IS NOT NULL DROP TABLE #XML_Dummy
GO
CREATE TABLE #XML_Dummy
(
[ID] [INT] IDENTITY(1, 1)
NOT NULL ,
[XMLValue] [NVARCHAR](MAX) NULL
);
GO
INSERT INTO #XML_Dummy
(
[XMLValue]
)
select top 10 xmlcol from MyTable
GO
SELECT
b.x.value('(/Proponix/Header/SubHeader/InstrumentID)[1]', 'varchar(max)')
FROM
#XML_Dummy a
CROSS APPLY (
SELECT
CAST(CAST ([XMLValue] AS VARCHAR(MAX)) AS XML) x
) b;
IF OBJECT_ID('tempdb..#XML_Dummy') IS NOT NULL DROP TABLE #XML_Dummy;
我不确定我为什么要返回所有 NULLS。我想返回 InstrumentID。这是我的 XML 的摘录:
<?xml version="1.0"?>
<Proponix>
<Header>
Header stuff
</Header>
<SubHeader>
<InstrumentID>BS6000000001</InstrumentID>
</SubHeader>
A lot more fields
我错过了什么?这是我第一次在 SQL Server 中使用 XML。
【问题讨论】:
标签: sql-server xml sql-server-2008