我正在尝试将记录从XML文件插入到SQL Server
表中。 XML文件在Depth
列中有一些条目,其值与ex几乎没有什么不同。 -8.67991800817151E-0
有人可以指导我如何将该值转换为十进制并插入表中吗?谢谢。
这是我的存储过程:
CREATE PROCEDURE [dbo].[IProjectData]
@xml XML
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO DHDStrainSet
SELECT
DHDStrainSet.value('(StrainID/text())[1]','VARCHAR(255)') AS StrainID,
DHDStrainSet.value('(Depth/text())[1]','decimal(18,3)') AS Depth,
DHDStrainSet.value('(Strain/text())[1]','decimal(18,10)') AS Strain,
DHDStrainSet.value('(ProjectID/text())[1]','VARCHAR(50)') AS ProjectID
FROM
@xml.nodes('/RSM3DDB/DHDStrainSet') AS TEMPTABLE(DHDStrainSet)
END
示例XML文件为:
<?xml version="1.0" standalone="yes"?>
<RSM3DDB>
<DHDStrainSet>
<StrainID>SB 1_1ef50386</StrainID>
<Depth>-5.001987E-9</Depth>
<Strain>0.99</Strain>
<ProjectID>Hoop</ProjectID>
</DHDStrainSet>
</RSM3DDB>
答案 0 :(得分:0)
XML文件的“深度”列中有一些条目,其值与ex几乎没有什么不同。 -8.67991800817151E-0。有人可以指导我如何将该值转换为十进制吗?
由于无法将值-8.67991800817151E-0
转换为decimal
,因此需要将其转换为float
。
所以这行:
DHDStrainSet.value('(Depth/text())[1]','decimal(18,3)') AS Depth,
需要更改为(将纠正错误):
DHDStrainSet.value('(Depth/text())[1]','float') AS Depth,
因此,在您所说的所有您想要的decimal(10,3)
中,您可以将该值转换为decimal(10,3)
,例如:
convert(decimal(10,3), DHDStrainSet.value('(Depth/text())[1]','float')) AS Depth,
这将输出:-8.68