SQL SERVER中强制类型转换cast和convert的区别
2个回答
展开全部
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
样式
和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
样式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将某种数据类型的表达式显式转换为另一种数据类型。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
数据隐性地转换到其它数据类型的对象
和
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
数据隐性地转换到其它数据类型的对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |