【Sqlserver系列】CAST和CONVERT的区别

1   概述

 本篇文章主要讲解SqlServer中类型转换涉及的两个函数:CAST和CONVERT。

2   具体内容

2.1  CAST

(1)作用:将一种数据类型的表达式转换为另一种数据类型的表达式。

(2)定义:

1 CAST ( expression AS data_type)

Parameters:

     expression:任何可转换为 data_type 的有效表达式;

     data_type:系统提供的目标数据类型。 该类型必须为基元(标量)类型。 使用的 data_type 取决于查询空间。 如果使用EntityCommand 执行查询,则数据类型为概念模型中定义的类型。  

Return Value::

    返回与 data_type 相同的值。

(3)例子

SELECT CAST('2017' AS INT)  --2017

SELECT CAST(2017 AS INT)   --2017

SELECT CAST(2017.3 AS INT)   --2017

SELECT CAST('2017.3' AS INT)--消息 245,级别 16,状态 1,第 1 行,在将 varchar 值 '2017.3' 转换成数据类型 int 时失败。

SELECT CAST('2017.3' AS decimal) --2017

SELECT CAST('2017.3' AS decimal(8,2))  --2017.30
 

2.2  CONVERT

(1)作用:将一种数据类型的表达式转换为另一种数据类型的表达式。

(2)定义:

1 CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Parameters:

   expression:任何有效的表达式;

   data_type:目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型;

   length:指定目标数据类型长度的可选整数。默认值为 30;

   style:指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分;

Return Value:

   返回转换为 data_type 的 expression。

(3)例子

SELECT CONVERT(INT,'2017')   --2017
 
SELECT CONVERT(INT,2017.3)   --2017

SELECT CONVERT(INT,'2017.3')   --消息 245,级别 16,状态 1,第 1 行,在将 varchar 值 '2017.3' 转换成数据类型 int 时失败。

SELECT CONVERT(decimal,'2017.3')  --2017

SELECT CONVERT(decimal(8,2),'2017.3') --2017.30

 

2.3  CAST和CONVERT比较

(1)cast一般更容易使用,convert的优点是可以格式化日期和数值;

(2)convert一般用于日期和时间值,小数之间转换,cast一般用于小数转数值和字符型;

(3)converk显示转换,cast是强制转换;            
(4)例子

select CONVERT(varchar, getdate(), 120 )  --2017-08-13 03:56:14
 
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --20170813035627
 
select CONVERT(varchar(12) , getdate(), 111 ) --2017/08/13
 
select CONVERT(varchar(12) , getdate(), 112 )  --20170813
 
select CONVERT(varchar(12) , getdate(), 102 )  --2017.08.13
 
select CONVERT(varchar(12) , getdate(), 101 )  --08/13/2017
 
select CONVERT(varchar(12) , getdate(), 103 )  --13/08/2017
 
select CONVERT(varchar(12) , getdate(), 104 )  --13.08.2017
 
select CONVERT(varchar(12) , getdate(), 105 )  --13-08-2017
 
select CONVERT(varchar(12) , getdate(), 106 )  --13 08 2017
 
select CONVERT(varchar(12) , getdate(), 107 )  --08 13, 2017
 
select CONVERT(varchar(12) , getdate(), 108 )  --03:57:39
  
select CONVERT(varchar(12) , getdate(), 109 )  --08 13 2017  
 
select CONVERT(varchar(12) , getdate(), 110 )  --08-13-2017
 
select CONVERT(varchar(12) , getdate(), 113 )  --13 08 2017 0
 
select CONVERT(varchar(12) , getdate(), 114 )  --03:58:08:200
 
select getdate()  --2017-08-13 03:58:48.660
 
select convert(char(8),getdate(),112)  --20170813
 
select convert(char(8),getdate(),108)  --03:58:48
 
select convert(char(8),getdate(),112)  --20170813
  

参考表:

转载自:https://www.cnblogs.com/wangjiming/p/7352256.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值