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

 我来答
买骏喆奕晗
2019-11-25 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:827万
展开全部
SQL中cast
和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。CAST

CONVERT
提供相似的功能,只是语法不同。
在时间类型转化中一般用到convert,因为它比cast多加了一个style,可以转化成不同时间的格式。
一、使用语法:
1、CAST
(
expression
AS
data_type
)
2、CONVERT
(data_type[(length)],
expression
[,
style])
参数说明:
expression:是任何有效的表达式。
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('1234' as int) -- 1234
select CONVERT(int, '1234') -- 1234
select CAST(123.4 as int) -- 123
select CONVERT(int, 123.4) -- 123
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 moneyset @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
CONVERT(VARCHAR(19),GETDATE()) --Dec 29 2016 11:45 PM
CONVERT(VARCHAR(10),GETDATE(),110) --12-29-2016
CONVERT(VARCHAR(11),GETDATE(),106) --29 Dec 16
CONVERT(VARCHAR(24),GETDATE(),113) --29 Dec 2016 16:25:46.635三、convert函数的style参数说明
1、时间style
2、float

real
样式
3、money

smallmoney
样式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卢平良郝漫
2019-01-08 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:25%
帮助的人:880万
展开全部
将某种数据类型的表达式显式转换为另一种数据类型。CAST

CONVERT
提供相似的功能。
语法
使用
CAST:
CAST
(
expression
AS
data_type
)
使用
CONVERT:
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
数据类型)。
将某种数据类型的表达式显式转换为另一种数据类型。有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将
datetime

smalldatetime
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar

nvarchar
数据类型);或者字符串格式样式,借以将
float、real、money

smallmoney
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar

nvarchar
数据类型)。当转换为字符数据时输出。
隐性转换对于用户是不可见的。
SQL
Server
自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个
smallint
变量和一个
int
变量相比较,这个
smallint
变量在比较前即被隐性转换成
int
变量。
显式转换使用
CAST

CONVERT
函数。
CAST

CONVERT
函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的
CAST
函数将数值
$157.27
转换成字符串
''$157.27'':CAST
(
$157.27
AS
VARCHAR(10)
)
CAST
函数基于
SQL-92
标准并且优先于
CONVERT。
当从一个
SQL
Server
对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar
数值根本就不能被转换成
image
数值。nchar
只能显式地转换成
binary,隐性地转换到
binary
是不支持的。nchar
可以显式地或者隐性地转换成
nvarchar。
当处理
sql_variant
数据类型时,SQL
Server
支持将具有其它数据类型的对象隐性转换成
sql_variant
类型。然而,SQL
Server
并不支持从
sql_variant
数据隐性地转换到其它数据类型的对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式