到SQL2005中,转换成字符是自动变成科学计数法的解决方法

到SQL2005中,转换成字符是⾃动变成科学计数法的解决⽅法今天导⼊客户⽤户信息时,发现Excel中的⼿机号码导⼊到SQL时是float,就⽤Convert直接转成Varchar更新到数据库中了,查看后发现是 使⽤的科学计数法的1.37..+e10,就把 Excel表中相关的单元格的格式设置成了 ⽂本,⼼想总可以了吧,导⼊后发现还是 科学计数法。郁闷
摸索后发现通过如下的设置可以解决这个问题
1、将 字段的数据类型设置为 double(numberic应该也可以),保存表设计,数据⾃动加上 “.00″,
2、再将字段属性设置为 Varchar,还是带有 “.00″的Varchar数据
3、写⼀个Update语句,⽤Replace去掉数据中的 “.00”
OK,搞定
从⽹上还查到⼀个⽅法,因为时间紧张,没有去验证,在此摘抄⼀下,希望对⼤家有帮助:
今天在把⼀些数据导⼊到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

本文发布于:2024-09-22 10:06:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/378240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   数据   科学   数值   计数法   指定
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议