使用TSQL选择XML节点
问题描述:
我的SQL Server 2008数据库表有一个XML字段。我想从字段中选择节点以及其他字段。例如,请考虑下表:使用TSQL选择XML节点
DECLARE @TestTable AS TABLE ([Id] VARCHAR(20), [Name] XML)
INSERT INTO @TestTable SELECT
'001',
'<Name><First>Ross</First><Last>Geller</Last></Name>'
UNION ALL SELECT
'002',
'<Name><First>Rachel</First><Last>Green</Last></Name>'
我想要的结果是:
001 | Ross | Geller
002 | Rachel | Green
这可能吗?谢谢,
答
这应做到:
DECLARE @TestTable AS TABLE (
[Id] VARCHAR(20),
[Name] XML
)
INSERT INTO @TestTable
SELECT '001',
'<Name><First>Ross</First><Last>Geller</Last></Name>'
UNION ALL
SELECT '002',
'<Name><First>Rachel</First><Last>Green</Last></Name>'
SELECT Id,
x.value('(/Name/First)[1]', 'varchar(20)') AS [First],
x.value('(/Name/Last)[1]', 'varchar(20)') AS [Last]
FROM @TestTable t
CROSS APPLY [Name].nodes('/Name') AS tbl (x)
你不需要'CROSS APPLY'线在所有如果你改变'x.value'到'Name.value' – AakashM 2011-04-27 06:55:40
你说得对。我以我的方式呈现了它,因为它更适用于一般情况。 – 2011-04-27 12:17:02