如题所述
å°æç§æ°æ®ç±»åç表达å¼æ¾å¼è½¬æ¢ä¸ºå¦ä¸ç§æ°æ®ç±»åã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 æ°æ®éæ§å°è½¬æ¢å°å ¶å®æ°æ®ç±»åç对象
ä½¿ç¨ 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 æ°æ®éæ§å°è½¬æ¢å°å ¶å®æ°æ®ç±»åç对象
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2018-03-14
在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本回答被网友采纳
只是语法不同.
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本回答被网友采纳
第2个回答 2019-01-07
在SQL
SERVER中,cast和convert函数都可用于类型转换,其功能是相同的,
只是语法不同.
cast一般更容易使用,convert的优点是可以格式化日期和数值。
用法举例如下:
select
CAST('123'
as
int)
输出:
--
123
select
CAST('123'
as
int)
同样输出:
--
123
SERVER中,cast和convert函数都可用于类型转换,其功能是相同的,
只是语法不同.
cast一般更容易使用,convert的优点是可以格式化日期和数值。
用法举例如下:
select
CAST('123'
as
int)
输出:
--
123
select
CAST('123'
as
int)
同样输出:
--
123
第3个回答 2020-02-07
由于SQL
Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL
Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。
CAST是两种功能中更具
ANSI标准
的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它
数据库软件
使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。
CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current
date下生成char变量一般使用以下方法:
SELECT
CONVERT(CHAR(10),
CURRENT_TIMESTAMP,
102)
(102表明使用了ANSI日期模式,即yy.mm.dd型)
然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:
SELECT
CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102)
AS
DATETIME
返回值
将是
yy.mm.dd
00:00:00(如12:00AM作为
时间戳
Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL
Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。
CAST是两种功能中更具
ANSI标准
的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它
数据库软件
使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。
CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current
date下生成char变量一般使用以下方法:
SELECT
CONVERT(CHAR(10),
CURRENT_TIMESTAMP,
102)
(102表明使用了ANSI日期模式,即yy.mm.dd型)
然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:
SELECT
CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102)
AS
DATETIME
返回值
将是
yy.mm.dd
00:00:00(如12:00AM作为
时间戳