Excel 手机号码、身份证 等信息 导入到SQL2005

系统 1802 0

今天导入客户用户信息时,发现Excel中的手机号码导入到SQL时是float,就用Convert直接转成Varchar更新到数据库中了,查看后发现是 使用的科学计数法的1.37..+e10,就把 Excel表中相关的单元格的格式设置成了 文本,心想总可以了吧,导入后发现还是 科学计数法。郁闷

 

摸索后发现通过如下的设置可以解决这个问题

1、将 字段的数据类型设置为 double(numberic应该也可以),保存表设计,数据自动加上 ".00",

2、再将字段属性设置为 Varchar,还是带有 ".00"的Varchar数据

3、写一个Update语句,用Replace去掉数据中的 ".00"

OK,搞定

 

从网上还查到一个方法,因为时间紧张,没有去验证,在此摘抄一下,希望对大家有帮助:

原文地址: http://www.cnblogs.com/studyzy/archive/2009/08/27/1555356.html

今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。

SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。

有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。

对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:

      
        declare
      
       @i 
      
        int
      
      
        set
      
       @i=123456789
      
print 'test:' + convert ( varchar (20),@i)
输出就是:test:123456789

而如果对于近似数值的数据类型,那么可就没有那么简单了。

      
        declare
      
       @i 
      
        float
      
      
        set
      
       @i=123456789
      
print 'test:' + convert ( varchar (20),@i)
输出结果:test:1.23457e+008

输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到 float real 转换为字符数据时的 style 值:

0 (默认值)最大为 6 位数。根据需要使用科学记数法。

1 始终为 8 位值。始终使用科学记数法。

2 始终为 16 位值。始终使用科学记数法。

我们的值是123456789,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。

同样以上面的例子为例, 进行两次数据类型的转换如下:

      
        declare
      
       @i 
      
        float
      
      
        set
      
       @i=123456789
      
print 'test:' + convert ( varchar (20), convert ( int ,@i))
输出:test:123456789
      如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:
    
      
        declare
      
       @i 
      
        float
      
      
        set
      
       @i=123456789.12
      
print 'test:' + convert ( varchar (20), convert ( decimal (18,4),@i))
输出:test:123456789.1200

 

 

Excel 手机号码、身份证 等信息 导入到SQL2005 中,转换成字符是自动变成 科学计数法 的解决方法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论