黑马程序员技术交流社区

标题: 求解SQL中CAST与CONVERT的区别 [打印本页]

作者: 李荣壮    时间: 2011-11-4 23:13
标题: 求解SQL中CAST与CONVERT的区别
看MSDN上面的解释,晕了,麻烦来点通俗的。。。

该贴已经同步到 李荣壮的微博
作者: 何荣智    时间: 2011-11-5 01:06
使用 CAST:
CAST ( expression AS data_type )
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
可以看到,convert比CAST多了一个style,在转化成日期类型时,因为需要格式要求,cast就不合适了,应该还有其他一些需要转化格式的,比如金钱等等,这个看看帮助就知道了。
其他时候,二者实现的功能都一样。 都是转化类型的函数
作者: 何荣智    时间: 2011-11-5 01:06
使用 CAST:
CAST ( expression AS data_type )
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
可以看到,convert比CAST多了一个style,在转化成日期类型时,因为需要格式要求,cast就不合适了,应该还有其他一些需要转化格式的,比如金钱等等,这个看看帮助就知道了。
其他时候,二者实现的功能都一样。 都是转化类型的函数
作者: 黄威    时间: 2011-11-5 09:31
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的,
只是语法不同.
cast一般更容易使用,convert的优点是可以格式化日期和数值.
代码
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')
-- Conversion failed when converting the varchar value '123.4' to data type int.

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2