SQL SERVER中强制类型转换cast和convert

在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是类似,只是语法不同。

语法:

cast ( expression as data_type [ (length ) ])
convert ( data_type [ ( length ) ] , expression [ , style ] )

参数:

expression

是任何有效的 Microsoft SQL Server" 表达式。有关更多信息,请参见表达式。

data_type

目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。

length

nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

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')
-- 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


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server数据库Cast和Convert都是用于将一个数据类型转换为另一个数据类型的函数。Cast是SQL Server 2008版本之后新增的函数,而Convert是早期版本的函数,已经存在了很长时间。 Cast函数可以将一个值转换为另一个类型的值。它非常简单明了,语法也非常简单。它需要以括号括起来的两个参数。第一个参数是要转换的表达式,第二个参数是所需的数据类型。Cast函数可能不适用于所有数据类型的转换。它只能将一个数据类型转换为兼容的数据类型。 在另一方面,Convert函数提供了更加灵活的转换,它允许选择输出格式以及指定日期和时间转换格式等选项。在使用Convert函数时,需要提供三个参数:要转换的表达式、目标数据类型以及格式号。Convert函数可以转换的数据类型更多,因为它可以指定类型的格式。 另外,即使是同一数据类型,使用Cast和Convert函数的结果可能也会不同,因为Convert函数提供了更多的控制选项。如果您需要将一个数据类型转换为另一个数据类型,并且您需要更多的控制权,那么建议您使用Convert函数。但是,如果您只需要简单地将一种数据类型转换为另一种数据类型,则Cast函数是更加简单和明确的选择。 总之,Cast和Convert函数都是用于将一个数据类型转换为另一个数据类型的函数。它们之间的主要区别在于Convert函数提供了更多的控制选项,而Cast函数更加简单和明确。它们可以用于不同的场景,具体取决于您需要哪种类型的转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值