在 mysql 操作中我们经常需要对数据进行类型转换,此时我们应该使用的是cast()或convert()。两者的对比:
相同点:都是进行数据类型转换,实现的功能基本等同。
不同点:两者的语法不同,cast(value as type) 、 convert(value,type)
一、语法
1、使用 CAST:CAST ( expression AS data_type )
2、使用 CONVERT:CONVERT (data_type[(length)], expression [, style])
3、参数说明:
(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 数据类型)。
二、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
三、SQL中CAST和CONVERT用在时间转换上的区别
cast 和 convert 都是用来转化数据类型的,功能上是差不多的。
在时间转化中一般用到 convert,因为它比 cast 多加了一个 style,可以转化成不同时间的。打个简单的例子吧,比方说查找一下当前的时间,select getdate(),而我们只需要到年月日而已,这时我们就可以把它转化为 select convert(varchar(100),GETDATE(),111) 转化成我们需要的,而 select CAST(GETDATE() as varchar(30)) cast 就没办法或者是转化过程比较繁琐。
convert 时间后面的 style 值不同产生的时间格式也不一样,具体可参看网站http://www.w3school.com.cn/sql/func_convert.asp
本文摘自 :https://www.cnblogs.com/