关于SQL Server中将数值类型转换为字符串的问题(转)
2018-02-23 11:24
555 查看
今天将Excel中的数据导入到数据库表A后,某一列被自动定义成了Float数据类型,然而,我们的正式库中的表B的相对应的列是Varchar类型的,所以,就出现了表B中所对应的列数据变成了科学计数法的形式。 原文地址: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由于我们知道数据类型间转换的两种方式有:Cast、Convert,那么他们两者之间的区别是什么呢?可参考:http://technet.microsoft.com/zh-cn/library/ms187928(v=sql.105).aspx
相关文章推荐
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题[转]
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题(转)
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串float类型超过6位会变成近似值
- SQL零星技术点:SQL中转换money类型数值转换为字符串问题
- 关于java将String类型的时间字符串转换为Date类型的问题
- (转)在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- [SQL SERVER]使用 STR()函数将数值转换为字符串类型, 并避免指数形式
- SQL Server 疑难杂症--转换科学计数法的数值字符串为decimal类型
- 在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- SQLSERVER数据库将数值类型转换为字符串的问题
- 关于C#中货币类型和数值类型、字符串类型的转化和在DataGridView中的显示问题:
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- Delphi - 盒子上面看见的一个问题:关于类型转换Type Cast
- 关于mysql、数字类型之间转换的问题