SQL Server中如何把"科学记数法"字符串变为"数字"字符串(随手笔记)

SQL Server中如何把"科学记数法"字符串变为"数字"字符串

变成科学记数法字符串原因

当我们将Excel的数据导入SQL Server时,如果用SQL Server的字符串类型(VARCHAR和NVARCHAR等)来存储从Excel导入的数字,有时候这些数字会变成科学记数法字符串(例如’6E-05’实际上是’0.0001)。这并不是我们想要的结果,我们希望从Excel导入的数字还是数字字符串,而不是科学记数法。

解决思路

**在SQL Server中我们可以通过这个思路来将“科学记数法字符串”变为“数字”字符串:
1.首先将 科学记数法字符串 转换为 FLOAT类型
2.接着将 FLOAT类型 转换为 DECIMAL类型(DECIMAL类型声明的小数位数,就是需要保留的小数位数)
3.将 DECIMAL类型 转换为 字符串类型(VARCHAR和NVARCHAR等)

这个思路的核心就是DECIMAL类型,因为DECIMAL类型在SQL Server中不会表示为科学记数法,有可能你会问,为什么转换为FLOAT类型不行呢?原因是在SQL Server中FLOAT类型也有可能会出现科学记数法**,点击了解一下

示例

将科学记数法字符串 ‘6E-05’ 转换为 整数字符串 ‘0.0001’:

DECLARE @Number NVARCHAR(50)=N'6E-05'

SELECT CONVERT(NVARCHAR(50),CONVERT(DECIMAL(18,4),CONVERT(FLOAT,@Number)))

在这里插入图片描述
结果如下:
在这里插入图片描述

发布了25 篇原创文章 · 获赞 5 · 访问量 897

猜你喜欢

转载自blog.csdn.net/qq_41863998/article/details/104003187
今日推荐