这是我在SQL中的XML字段的内容:
- <TestingConfig xmlns="http://tempuri.org/TestingConfig.xsd">
`- <Config>`
`<ConfigId>75</ConfigId>`
`<PlaceId>2</PlaceId>`
`<Identifier>05</Identifier>`
`<Name>TEST1</Name>`
`</Config>`
`- <Config>`
`<ConfigId>76</ConfigId>`
`<PlaceId>2</PlaceId>`
`<Identifier>06</Identifier>`
`<Name>TEST2</Name>`
`</Config>`
`</TestingConfig>`
我需要查询它并将结果返回到以下行:
Config ID PlaceID Identifier Name
75 2 05 TEST1
76 2 06 TEST2
我需要它不在结果中包含命名空间。我是XML查询的新手。谢谢你的帮助。
答案 0 :(得分:1)
如果你使用的是SQL Server 2005或2008,那么这样的东西对你有用......
DECLARE @xml XML
SELECT @xml = '<TestingConfig>
<Config>
<ConfigId>75</ConfigId>
<PlaceId>2</PlaceId>
<Identifier>05</Identifier>
<Name>TEST1</Name>
</Config>
<Config>
<ConfigId>76</ConfigId>
<PlaceId>2</PlaceId>
<Identifier>06</Identifier>
<Name>TEST2</Name>
</Config>
</TestingConfig>'
SELECT node.ref.value( 'ConfigId[1]', 'int' ) AS [ConfigId],
node.ref.value( 'PlaceId[1]', 'int' ) AS [PlaceId],
node.ref.value( 'Identifier[1]', 'varchar(32)' ) AS [Ident],
node.ref.value( 'Name[1]', 'varchar(32)' ) AS [Name]
FROM @xml.nodes( '/TestingConfig/Config' ) AS node(ref)
答案 1 :(得分:0)
这对我有用。感谢大家的回复。
WITH XMLNAMESPACES('http://tempuri.org/TestingConfig.xsd'AS CC)
选择
CC.Config.value('CC:ConfigId [1]','int')AS [ConfigId],
CC.Config.value('CC:PlaceId [1]','int')AS [PlaceId],
CC.Config.value('CC:Identifier [1]','char(2)')AS [Identifier],
CC.Config.value('CC:Name [1]','varchar(8)')AS [名称]
FROM TestingConfig
CROSS APPLY TestingConfig.ConfigField.nodes('// CC:Config')AS CC(配置)