当我们将Excel的数据导入SQL Server时,如果用SQL Server的字符串类型(VARCHAR和NVARCHAR等)来存储从Excel导入的数字,有时候这些数字会变成科学记数法字符串(例如'1.23E+10'实际上是'12300000000')。

这并不是我们想要的结果,我们希望从Excel导入的数字还是数字字符串,而不是科学记数法。

在SQL Server中我们可以通过这个思路来将 科学记数法字符串 变为 数字字符串

  1. 首先将 科学记数法字符串 转换为 FLOAT类型
  2. 接着将 FLOAT类型 转换为 DECIMAL类型(DECIMAL类型声明的小数位数,就是需要保留的小数位数)
  3. 将 DECIMAL类型 转换为 字符串类型(VARCHAR和NVARCHAR等)

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

我们下面就举个例子,将 科学记数法字符串 '1.23E+10' 转换为  整数字符串 '12300000000':

DECLARE @Number NVARCHAR(50)=N'1.23E+10'

SELECT CONVERT(NVARCHAR(50),CONVERT(DECIMAL(28,0),CONVERT(FLOAT,@Number)))

结果如下:

由于我们知道该科学记数法是一个整数,所以我们声明转换为DECIMAL类型时,声明的是DECIMAL(28,0),小数位是0,也就是不保留小数位。

下面我们再来看一个例子,将 科学记数法字符串 '1.23456789E+5' 转换为  保留两位小数的字符串 '123456.79':

DECLARE @Number NVARCHAR(50)=N'1.23456789E+5'

SELECT CONVERT(NVARCHAR(50),CONVERT(DECIMAL(28,2),CONVERT(FLOAT,@Number)))

结果如下:

由于我们知道该科学记数法是一个小数,所以我们声明转换为DECIMAL类型时,声明的是DECIMAL(28,2),小数位是2,也就是保留两位小数。

SQL Server中如何把 科学记数法字符串 变为 数字字符串的更多相关文章

  1. sql server中的怎么把数值型转换为字符串

    ①select cast(字段 as varchar) from 表名 ②select convert(varchar(50),字段) from 表名  

  2. ASP.NET用SQL Server中的数据来生成JSON字符串

    原文引自:  作者: 缺水的海豚  来源: 博客园  发布时间: 2010-09-21 21:47  阅读: 6136 次  推荐: 0   原文链接   [收藏] 摘要:ExtJs用到的数据内容基本 ...

  3. SQL Server中截取字符串常用函数

    SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...

  4. SQL Server中字符串转化为GUID的标量函数实现

        还是工作中遇到的需求,有时候和外部的系统对接,进行数据的核对功能,外部的系统有时候主键字段列数据类是UNIQUEIDENTIFER(GUID)类型的字符串格式,去除了GUID格式中的分隔符“- ...

  5. 实现SQL Server中的切割字符串SplitString函数,返回Table

    有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了. -- ===================================== ...

  6. SQL Server 中截取字符串常用的函数

    SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...

  7. Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中

    Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...

  8. sql server中截取字符串的常用函数

    我们如果要在sql server中,使用截取字符串的方法要怎样使用呢? sql server提供了3个常用截取字符串方法,LEFT().RIGHT().SUBSTRING() /****** Sql ...

  9. 实现SQL Server中的切割字符串SplitString函数

    有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了.没什么好说的,需要的朋友直接拿去用吧 SET ANSI_NULLS ON GO S ...

随机推荐

  1. 一个APACHE TOMCAT漏洞修复

    这种情况加个SSL证书就行了  就是HTTPS协议

  2. 05. redis事务

    目录 Redis 事务 事务 1. 命令有序 2. 始终原子 开启使用事务 Redis事务中出现错误 1. EXEC前的错误 2. EXEC后的错误 为什么出错了不支持roll backs? Redi ...

  3. 为什么内核访问用户数据之前,要做access_ok?

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 原理 先看一段小视频,如果内核访问用户 ...

  4. MYSQL:基于哈希的索引和基于树的索引有什么区别?

    B+树是一个平衡的多叉树.B+树从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动. 哈希索引采用一定的哈希算法,把键值换成新的哈希值,检索时不需要类似B+树那样从根节点逐级查找,只需一次哈希算法 ...

  5. Problem A. 最近公共祖先 ———2019.10.12

    我亲爱的学姐冒险跑去为我们送正解 但是,,,, 阿龙粗现了! cao,, 考场期望得分:20   实际得分:20 Problem A. 最近公共祖先 (commonants.c/cpp/pas) 最近 ...

  6. C语言实现聊天室软件

    /* common.h */ /*服务器端口信息*/ #define PORTLINK ".charport" /*缓存限制*/ #define MAXNAMELEN 256 #d ...

  7. 你好,我叫Flask

    首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 一. Python 现阶段三大主流Web框 ...

  8. Linux下rpm及yum安装jdk

    笔者使用的Linux操作系统为CentOS7,Linux中有三种安装jdk的方式,在这里笔者主要介绍两种方式,即rpm和yum安装及卸载jdk,还有一种是直接从官网下载 tar.gz 压缩文件上传到L ...

  9. 最新版IntelliJ IDEA2019破解方法、补丁、注册码(激活码),永久激活

    最新版IntelliJ IDEA2019破解方法.补丁.注册码(激活码),永久激活 目录 1.打赏记录 2.适用版本(适用于Windows及MacOS系统) 3.下载补丁 4.JetbrainsIde ...

  10. jquery设置bootstrap-select的默认选中值

    <select id="mSelect"></select> $("#mSelect").val(["1",&quo ...