SQL SERVER中强制sqlite 类型转换 castcast和convert的区别

SQL SERVER中强制类型转换cast和convert的区别-百谷歌今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。
SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。
有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。
对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:
declare @i int
set @i=print 'test:'+convert(varchar(20),@i)输出就是:test:
而如果对于近似数值的数据类型,那么可就没有那么简单了。
declare @i float
set @i=print 'test:'+convert(varchar(20),@i)输出结果:test:1.2
输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style 值:
0(默认值)最大为 6 位数。根据需要使用科学记数法。
1 始终为 8 位值。始终使用科学记数法。
2 始终为 16 位值。始终使用科学记数法。
我们的值是,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。
同样以上面的例子为例, 进行两次数据类型的转换如下:
declare @i float
set @i=print 'test:'+convert(varchar(20),convert(int,@i))输出:test:
如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:
declare @i float
set @i=print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))输出:test:00
阅读(...) 评论()SQL中转换数据类型的
Cast和Convert的用法和区别
SQL Server 函数
本文导读:SQL中的cast 和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。CAST 和 CONVERT 提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style,可以转化成不同时间的格式。
1、使用 CAST
  CAST ( expression AS data_type )
2、使用 CONVERT
  CONVERT (data_type[(length)], expression [, style])
3、参数说明
  expression
  是任何有效的表达式。
  data_type:
  目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。
  length
  nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
  日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
二、cast和convert的代码示例
SQL 代码 &&复制
select CAST('<span style="color:#ff' as int)
select CONVERT(int, '<span style="color:#ff')
select CAST(123.4 as int)
select CONVERT(int, 123.4)
select CAST('<span style="color:#ff' as int)
select CONVERT(int, '<span style="color:#ff')
-- Conversion failed when converting the varchar value '123.4' to data type int.
select CAST('<span style="color:#ff' as decimal)
select CONVERT(decimal, '<span style="color:#ff') -- 123
select CAST('<span style="color:#ff' as decimal(9,2))
select CONVERT(decimal(9,2), '<span style="color:#ff') -- 123.40
declare @Num money
set @Num = 1234.56
select CONVERT(varchar(20), @Num, 0)
-- 1234.56
select CONVERT(varchar(20), @Num, 1)
-- 1,234.56
select CONVERT(varchar(20), @Num, 2)
三、convert函数的style参数说明
1、Date 和 Time 样式
不带世纪数位 (yy)
带世纪数位 (yyyy)
mon dd yyyy hh:miAM(或 PM)
1 = mm/dd/yy
101 = mm/dd/yyyy
2 = yy.mm.dd
102 = yyyy.mm.dd
3 = dd/mm/yy
103 = dd/mm/yyyy
4 = dd.mm.yy
104 = dd.mm.yyyy
5 = dd-mm-yy
105 = dd-mm-yyyy
6 = dd mon yy
106 = dd mon yyyy
7 = Mon dd, yy
107 = Mon dd, yyyy
mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 = mm-dd-yy
110 = mm-dd-yyyy
11 = yy/mm/dd
111 = yyyy/mm/dd
12 = yymmdd
112 = yyyymmdd
dd mon yyyy hh:mi:ss:mmm(24h)
dd mon yyyy hh:mi:ss:mmm(24h)
yyyy-mm-dd hh:mi:ss(24h)
yyyy-mm-dd hh:mi:ss.mmm(24h)
yyyy-mm-ddThh:mi:ss.mmm(无空&#26684;)
yyyy-mm-ddThh:mi:ss.mmmZ(无空&#26684;)
dd mon yyyy hh:mi:ss:mmmAM
dd/mm/yyyy hh:mi:ss:mmmAM
2、float 和 real 样式
0(默认&#20540;)
最多包含 6 位。 根据需要使用科学记数法。
始终为 8 位&#20540;。 始终使用科学记数法。
始终为 16 位&#20540;。 始终使用科学记数法。
3、money 和 smallmoney 样式
小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98。
小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。
小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。
转换为 char(n) 或 varchar(n) 时,等同于样式 2
本文已收录于以下专栏:
相关文章推荐
1.&#160;&#160;
数据类型分类
1.1.1.&#160;&#160;&#160;
在SQL Server 2000中整型按照数据范围从小到大分为: bit, tinyint, smallint, int,...
看完这篇文章的第一感觉是,虽然对于日期类型数据使用得很算顺利,不过作者 提到的一些东西还真不知道。有时候在应用上,不觉得比老外差到那里去。但是, 老外的一个优良习惯细扣概念并进行实证检验;而我们的习惯...
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
SQL Server 函数大全
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值等。
...
本文导读:SQL中的cast 和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。CAST 和 CONVERT 提供相似的功能,只是语法不同。在时间转化中一般用到convert...
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值等。
下表给出了T-SQL函数的类...
他的最新文章
讲师:任铄
讲师:唐宇迪
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)SQL SERVER中强制类型转换cast和convert的区别--
SQL SERVER中强制类型转换cast和convert的区别
select CAST(&#39;123&#39; as int)
select CONVERT(int, &#39;123&#39;)
select CAST(123.4 as int)
select CONVERT(int, 123.4)
select CAST(&#39;123.4&#39; as int)
select CONVERT(int, &#39;123.4&#39;)
-- Conversion failed when converting the varchar value &#39;123.4&#39; to data type int.
select CAST(&#39;123.4&#39; as decimal)
select CONVERT(decimal, &#39;123.4&#39;) -- 123
select CAST(&#39;123.4&#39; as decimal(9,2))
select CONVERT(decimal(9,2), &#39;123.4&#39;) -- 123.40
declare @Num money
set @Num = 1234.56
select CONVERT(varchar(20), @Num, 0)
-- 1234.56
select CONVERT(varchar(20), @Num, 1)
-- 1,234.56
select CONVERT(varchar(20), @Num, 2)
网站设计制作:Nathan Zhang 张应彬}

我要回帖

更多关于 cast和convert的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信