当我们将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. Java期末复习——主观题

    JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Runtime Envir ...

  2. Python实现斐波那契数列,九九乘法表,金字塔方法。

    斐波那契数列普通函数实现 #普通函数 def fb(max): a,b=0,1 while a<max: print(a) a,b=b,a+b fb(100) 递归实现方法1 def fb1(m ...

  3. W5500 学习开发: W5500学习说明

    前言 官方已经给了大部分的例子,我只是做一下移植说明 这一节看一下如何移植官网程序的DHCP 首先先明确:单片机和W5500通信是通过SPI,所有的数据都是通过SPI接收和发送, 所以,拿到官方源码只 ...

  4. [RN] React Native 自定义 底部 弹出 选择框 实现

    React Native 自定义 底部选择框 实现 效果如图所示: 实现方法: 一.组件封装 CustomAlertDialog.js import React, {Component} from ' ...

  5. linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)

    单客户端和服务端的通信(基于UDP)   代码 服务端代码socket3.c #include<sys/types.h> #include<sys/socket.h> #inc ...

  6. C语言实现linux之who功能

    /* who_test.c */ #include<stdio.h> #include<string.h> #include<getopt.h> #include& ...

  7. 【WebTerminal】gotty工具

    ./gotty -w -p 8888 --permit-arguments /bin/sh ./gotty -w -p 8888 --permit-arguments  docker exec -ti ...

  8. C# 激活主窗口

    今天同学跟我说了一个bug,虽然很简单,但还是记录一下,也好让我养成写东西的习惯. C# windows form 程序中,发生某个事件时,需要自动弹出一个窗口,提示用户,并等待用户输入进行处理. 如 ...

  9. DI 依赖注入之unity(mvc)

    DI 依赖注入之unity(使用unity.mvc) 一.nuget下载安装: 使用Nuget安装Unity.MVC 安装完成后会在~/App_Start/目录下自动生成UnityMvcActivat ...

  10. nginx负载均衡原理

    负载均衡在服务端开发中算是一个比较重要的特性.因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就 ...