1 xml sql-server sql-server-2012 sql-server-2014
我需要以下情况的帮助:
在我的表 SQLServer 2012 中有一个带有 xml 值的字段,我想选择该字段中的数据并在表单列中显示结果。
<row>
<ID_Cota>162986</ID_Cota>
<ID_Taxa_Plano>1000</ID_Taxa_Plano>
<ID_Plano_Venda>1020</ID_Plano_Venda>
<ID_Pessoa>18522</ID_Pessoa>
</row>
Run Code Online (Sandbox Code Playgroud)
谢谢你。
使用XML 数据类型CROSS APPLY的.nodes方法,例如:
IF OBJECT_ID('dbo.yourTable') IS NOT NULL DROP TABLE dbo.yourTable
GO
CREATE TABLE dbo.yourTable (
rowId INT IDENTITY PRIMARY KEY,
ST_Registro_Del XML
)
GO
INSERT INTO dbo.yourTable ( ST_Registro_Del )
SELECT '<row>
<ID_Cota>162986</ID_Cota>
<ID_Taxa_Plano>1000</ID_Taxa_Plano>
<ID_Plano_Venda>1020</ID_Plano_Venda>
<ID_Pessoa>18522</ID_Pessoa>
</row>'
GO
SELECT
r.c.value('(ID_Cota/text())[1]', 'INT' ) AS ID_Cota,
r.c.value('(ID_Taxa_Plano/text())[1]', 'INT' ) AS ID_Cota,
r.c.value('(ID_Plano_Venda/text())[1]', 'INT' ) AS ID_Cota,
r.c.value('(ID_Pessoa/text())[1]', 'INT' ) AS ID_Cota
FROM dbo.yourTable yt
CROSS APPLY yt.ST_Registro_Del.nodes('row') r(c)
WHERE rowId = 1
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
该.nodes方法从 XML 返回结果集。text()在查询非类型化 XML 时使用访问器来提高性能(即没有 XSD 与 XML 列和[1]序数关联,这是说“给我你找到的第一个元素”的简写方式。
HTH
| 归档时间: |
|
| 查看次数: |
15387 次 |
| 最近记录: |