在SQL数据库中工作,有没有办法将float转换为nvarchar而不将float转换为科学记数法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我正在从头开始构建数据库。目前,由于存储的数据量庞大,Excel表格量很大,无法正常工作。我正在使用SQL Server数据库来存储数据。

现在,除了我使用的一个列之外,其他所有列都可以使用。我需要在我的大多数数据库中使用ID。不幸的是,一半的ID是字母数字,并且是数字(没有字母)。为了从Excel到SQL Server获取数据,我将一半的数据存储为float另一半NVARCHAR。一旦数据超出Excel,我就创建了第三列,并使用下面的代码组合数据:

UPDATE dbo.Table
SET ID = CONVERT(NVARCHAR(255), ISNULL(NumID, N'')) + N'' + CONVERT(NVARCHAR(255), ISNULL(LetID, N''))

运行代码后,我创建了一个新问题。数字数据现在写为“4.01867e + 007”而不是“40186720”。

有谁知道为什么或如何解决这个问题?我希望数据读作“40186720”,而不是让字母更容易使用。

提问于
用户回答回答于

如果数字部分介于±9 quintillion(实际上是9,223,372,036,854,775,807)之间,那么您可以在转换为文本之前将浮点数转换为bigint:

UPDATE dbo.Table
SET ID = CONVERT(NVARCHAR(255), ISNULL(convert(bigint,NumID), N'')) + N'' + CONVERT(NVARCHAR(255), ISNULL(LetID, N''))
用户回答回答于

你试过用过CAST吗? CONVERT有一个可选的样式参数,当留空时(取决于你的数据库)可能设置为一个默认值导致问题...

扫码关注云+社区

领取腾讯云代金券