列默认将数值更改为科学计数法

时间:2018-08-15 19:34:11

标签: sql sql-server tsql sql-server-2012

在sql server中,我试图选择将数据从一个表插入另一个表。该代码显示为:

Insert into TABLE2 (
Id, document_id
) select id, document_id from TABLE1

这两个表基本上是相同的。文档ID字段位于nvarchar50中,因为我们有时会获取其中带有字母的值。

如何获取这些作为数字值而不是科学计数法插入的值?

谢谢!

2 个答案:

答案 0 :(得分:0)

我假设table1中的列是varchar的某些变体,并且以科学计数法表示数字。您可以尝试将它们转换为real(并在必要时将其转换为其他数字或varchar形式)。

INSERT INTO table2
            (id,
             document_id)
            SELECT convert(real, id),
                   convert(real, document_id)
                   FROM table1;

答案 1 :(得分:0)

这似乎是一个Excel问题,其中Excel将文档ID视为数字而不是文本。 Excel的数字格式可能会破坏信息,因为相同的数字可以用不同的方式表示。例如。 500.2的原始格式是什么?是0500.200000000000500.20还是其他?此外,Excel甚至可能会舍弃小数,例如“ 5023423423423450”显示为“ 5.02342E + 15”。无法在SQL中还原此信息。

您必须通过以下任一方法在Excel中进行处理

  • 用引号(')输入文档ID,以告知Excel不要以某种方式解释它

或通过

  • 在输入文档ID之前,先将文档字段的格式设置为Text