27,579
社区成员
发帖
与我相关
我的任务
分享
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<Data value="200712">
<Assets>
<FixedAssets>1056000210009.2333</FixedAssets>
</Assets>
<Liabilities>
<CurrentLiabilities>你好</CurrentLiabilities>
<CurrentLiabilities>世界</CurrentLiabilities>
</Liabilities>
<MinorityInterests>3406000000</MinorityInterests>
</Data>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT * FROM OPENXML (@Idoc, '/Data/Assets/FixedAssets',2)WITH (
filed varchar(10) '/Data/@value'
,dt numeric(18,3) '/Data/Assets/FixedAssets'
,METHOD varchar(20) '/Data/Liabilities/CurrentLiabilities'
,tp numeric'/Data/MinorityInterests'
)
exec sp_xml_removedocument @Idoc
1. 如果为空值.怎么办?
DECLARE @idoc int;
DECLARE @doc nvarchar(4000); ---NVARCHAR(4000)
SET @doc =N'
<Data value="200712">
<Assets>
<FixedAssets>1056000210009.2333</FixedAssets>
</Assets>
<Liabilities>
<CurrentLiabilities>你好</CurrentLiabilities>
<CurrentLiabilities>世界</CurrentLiabilities>
</Liabilities>
<MinorityInterests>3406000000</MinorityInterests>
<price>3.3E-3</price>
</Data>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@Idoc, '/Data/Assets/FixedAssets',2)WITH (
filed varchar(10) '/Data/@value'
,dt numeric(18,3) '/Data/Assets/FixedAssets'
,METHOD varchar(20) '/Data/Liabilities' /*你好 世界*/
,tp numeric'/Data/MinorityInterests'
,price float '/Data/price' /*科学记数法*/
,nullvalue varchar(10) /*null值*/
)
exec sp_xml_removedocument @Idoc
DECLARE @idoc int;
DECLARE @doc xml;
SET @doc ='
<Data value="200712">
<Assets>
<FixedAssets>1056000210009.2333</FixedAssets>
</Assets>
<Liabilities>
<CurrentLiabilities>你好</CurrentLiabilities>
<CurrentLiabilities>世界</CurrentLiabilities>
</Liabilities>
<MinorityInterests>3406000000</MinorityInterests>
</Data>
'
SELECT filed=T.x.value('../../@value','int'),
FixedAssets=T.x.value('.','VARCHAR(50)'),
METHOD=T.x.query('for $i in ../../Liabilities
return string($i)').value('.','VARCHAR(20)'),
tp=T.x.value('(../../MinorityInterests)[1]','VARCHAR(20)')
FROM @doc.nodes('/Data/Assets/FixedAssets') AS T(x)
/*
filed FixedAssets METHOD tp
----------- -------------------------------------------------- -------------------- --------------------
200712 1056000210009.2333 你好世界 3406000000
(1 行受影响)
*/
DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='
<?xml version="1.0" encoding="gbk"?>
<Data value="200712">
<Assets>
<FixedAssets>1056000210009.2333</FixedAssets>
</Assets>
<Liabilities>
<CurrentLiabilities>你好</CurrentLiabilities>
<CurrentLiabilities>世界</CurrentLiabilities>
</Liabilities>
<MinorityInterests>3406000000</MinorityInterests>
</Data>
'
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT * FROM OPENXML (@Idoc, '/Data/Assets/FixedAssets',2)WITH (
filed varchar(10) '/Data/@value'
,dt numeric(18,3) '/Data/Assets/FixedAssets'
,METHOD varchar(20) '/Data/Liabilities/CurrentLiabilities'
,tp numeric'/Data/MinorityInterests'
)
exec sp_xml_removedocument @Idoc