加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL SERVER的cast和convert

发布时间:2022-11-09 15:27:15 所属栏目:MsSql教程 来源:
导读:  操作中对数据进行类型转换 cast 和 convert

  相同点:都可以进行数据类型转换

  不同点,语法不同

  cast

  cast(expresion as data_type)

  convert

  convert(data_type
  操作中对数据进行类型转换 cast 和 convert
 
  相同点:都可以进行数据类型转换
 
  不同点,语法不同
 
  cast
 
  cast(expresion as data_type)
 
  convert
 
  convert(data_type[(length)], expression[,style])
 
  (1)expression:是任何有效的表达式。
 
  (2)data_type:目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。
 
  (3)length:nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
 
  (4)style:日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
 
  select CAST('123' as int)   -- 123
  select CONVERT(int, '123')  -- 123
  select CAST(123.4 as int)   -- 123
  select CONVERT(int, 123.4)  -- 123
  select CAST('123.4' as int)
  select CONVERT(int, '123.4')
  select CAST('123.4' as decimal)  -- 123
  select CONVERT(decimal, '123.4') -- 123
  select CAST('123.4' as decimal(9,2))  -- 123.40
  select CONVERT(decimal(9,2), '123.4') -- 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)  -- 1234.5600
  CAST和CONVERT用在时间转换上的区别
 
  cast 和 convert 都是用来转化数据类型的,功能上是差不多的。
 
  在时间转化中一般用到 convert,因为它比 cast 多加了一个 style,可以转化成不同时间的。打个简单的例子吧,比方说查找一下当前的时间,select getdate(),而我们只需要到年月日而已,这时我们就可以把它转化为 select convert(varchar(100),GETDATE(),111) 转化成我们需要的Mssq类型转换函数,而 select CAST(GETDATE() as varchar(30)) cast 就没办法或者是转化过程比较繁琐。
 
  在这里插入图片描述
 
  1-1.SELECT CONVERT(decimal(5,2), ‘123.477’) ==>123.48
 
  1-2.SELECT CONVERT(decimal, ‘123.477’) ==>123
 
  提问:SELECT CONVERT(int, ‘123.477’) 和 SELECT CAST(‘123.477’ AS int) 的写法对不?
 
  回答:不对,会报错。因为CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作,所以要把int换成decimal,就像1-2 和 2-2 一样。
 
  SELECT CAST(123.477 AS int) 不报错
 
  SELECT CAST(‘123’ AS int) 不报错
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!