當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

SQL中的cast和convert的用法和區(qū)別以及時(shí)間轉(zhuǎn)換
2021-09-03 20:12:42

  在 mysql 操作中我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,此時(shí)我們應(yīng)該使用的是cast()或convert()。兩者的對(duì)比:

  相同點(diǎn):都是進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,實(shí)現(xiàn)的功能基本等同。

  不同點(diǎn):兩者的語(yǔ)法不同,cast(value as type) 、 convert(value,type)

一、語(yǔ)法

1、使用 CAST:CAST ( expression AS data_type )
2、使用 CONVERT:CONVERT (data_type[(length)], expression [, style])

3、參數(shù)說明:

(1)expression:是任何有效的表達(dá)式。

(2)data_type:目標(biāo)系統(tǒng)所提供的數(shù)據(jù)類型,包括 bigint 和 sql_variant。不能使用用戶定義的數(shù)據(jù)類型。

(3)length:nchar、nvarchar、char、varchar、binary 或 varbinary 數(shù)據(jù)類型的可選參數(shù)。

(4)style:日期格式樣式,借以將 datetime 或 smalldatetime 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數(shù)據(jù)類型);或者字符串格式樣式,借以將 float、real、money 或 smallmoney 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數(shù)據(jù)類型)。

二、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用在時(shí)間轉(zhuǎn)換上的區(qū)別

  cast 和 convert 都是用來轉(zhuǎn)化數(shù)據(jù)類型的,功能上是差不多的。

  在時(shí)間轉(zhuǎn)化中一般用到 convert,因?yàn)樗?cast 多加了一個(gè) style,可以轉(zhuǎn)化成不同時(shí)間的。打個(gè)簡(jiǎn)單的例子吧,比方說查找一下當(dāng)前的時(shí)間,select getdate(),而我們只需要到年月日而已,這時(shí)我們就可以把它轉(zhuǎn)化為 select convert(varchar(100),GETDATE(),111) 轉(zhuǎn)化成我們需要的,而 select CAST(GETDATE() as varchar(30)) cast 就沒辦法或者是轉(zhuǎn)化過程比較繁瑣。

  convert 時(shí)間后面的 style 值不同產(chǎn)生的時(shí)間格式也不一樣,具體可參看網(wǎng)站http://www.w3school.com.cn/sql/func_convert.asp

本文摘自 :https://www.cnblogs.com/

開通會(huì)員,享受整站包年服務(wù)立即開通 >