麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

SQL Server中T-SQL 數據類型轉換詳解

2024-08-31 01:05:17
字體:
來源:轉載
供稿:網友

常用的轉換函數是 cast 和 convert,用于把表達式得出的值的類型轉換成另一個數據類型,如果轉換失敗,該函數拋出錯誤,導致整個事務回滾。在SQL Server 2012版本中,新增兩個容錯的轉換函數:try_cast 和 try_convert,如果轉換操作失敗,該函數返回null,不會導致整個事務失敗,事務繼續執行下去。

注意:對于SQL Server顯式定義的不合法轉換,try_cast 和 try_convert 會失敗,拋出錯誤信息:Explicit conversion from data type int to date is not allowed.

select try_cast(1 as date)
轉換函數是parse 和 try_parse,只用于把字符類型轉換為 date/time 和 數字類型,在解析字符時會產生一定的性能消耗。

一,時間類型轉換

在把日期/時間類型轉換成字符串時,常用的轉換函數是Convert和Cast,convert函數能夠在一定程度上顯式控制日期/時間的顯示格式,而cast對日期/時間類型的顯示格式,無法顯式控制,我推薦使用另一個功能更強大的函數:FORMAT,該函數用于把日期時間類型,按照指定的格式轉換成字符串,也可以把數值按照特定的格式輸出。

1,常用的轉換函數

convert 常用于轉換date,datetime 等日期/時間類型,通過指定style參數,能夠控制數據顯示的格式

CAST ( expression AS data_type [ ( length ) ] )CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
常用的style及其顯示格式如下:

101 mm/dd/yyyy 110 mm-dd-yyyy 111 yyyy/mm/dd 112 yyyymmdd 120 yyyy-mm-dd hh:mm:ss 121 yyyy-mm-dd hh:mm:sssssss

CONVERT函數的style是數字,記憶起來比較困難,只能按照系統定義的格式來顯示,不夠靈活。SQL Server提供更為靈活的轉換函數FORMAT。

2,FORMAT函數,控制日期和時間類型的顯示格式

FORMAT函數主要用于格式化顯示date/time類型和數值類型,參數format用于指定顯示的格式,給予用戶對格式更自由地控制,culture參數是可選的,用于指定顯示的語言,該函數返回值的數據類型是NVARCHAR,如果格式轉換失敗,該函數返回NULL:

FORMAT ( value, format [, culture ] ) 
當轉換date/time時,在format參數中指定日期/時間顯示的格式,通常情況下,日期/時間的格式使用以下關鍵字符作為占位符:yyyy、MM、dd用來表示:年、月、日,而hh、mm、ss用來表示:時、分、秒,并使用“/”,“-”等作為連接符,例如:
DECLARE @d DATETIME = GETDATE(); SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' 
當轉換數值類型時,在參數format中使用#代表一個數字,使用相應的連接符,拼接成數字的格式字符,例如:
FORMAT(123456789,'###-##-####') AS 'Custom Number Result
SQLServer,數據類型,T-SQL,TSQL,數據類型轉換

二,容錯的轉換函數

TRY_CAST 和TRY_CONVERT是容錯的轉換函數,該函數嘗試把表達式的值轉換為指定的類型,如果轉換成功,返回指定類型的值;如果嘗試轉換失敗,返回NULL;如果請求把一個類型轉換為另一個被顯式禁止的數據類型,那么嘗試轉換失敗,拋出錯誤消息,也就是說,嘗試轉換能夠具有一定的容錯,但是,不能做“違法”的轉換操作。

TRY_CAST ( expression AS data_type [ ( length ) ] )TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
1,try_cast 返回null
SELECT CASE WHEN TRY_CAST('test' AS float) IS NULL     THEN 'Cast failed'   ELSE 'Cast succeeded'  END AS Result;
2,try_cast 轉換失敗,返回error
SELECT TRY_CAST(4 AS xml) AS Result;
錯誤消息是:Explicit conversion from data type int to xml is not allowed.

3,try_cast轉換成功

SET DATEFORMAT mdy;SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;
SQLServer,數據類型,T-SQL,TSQL,數據類型轉換

4,try_convert常用于把date/time類型轉換為指定格式的字符串

系統預定義Style,通過style參數指定最終顯示date/time的格式

SELECT TRY_CONVERT(varchar(8),getdate(),112 ) AS Result;

SQLServer,數據類型,T-SQL,TSQL,數據類型轉換

三,轉換的性能

轉換函數的性能是不同的,經過測試,cast 和 convert 的轉換性能最好,要比try_cast和try_convert要好一些;而Cast的轉換性能比convert要好一點。

參考文檔:

Performance Comparison of the SQL Server PARSE, CAST, CONVERT and TRY_PARSE, TRY_CAST, TRY_CONVERT Functions

CAST and CONVERT (Transact-SQL)


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片在线看免费 | 欧美日韩亚洲在线观看 | 日韩午夜一区二区三区 | 久久精品色 | 日韩欧美电影一区二区三区 | 在线中文字幕播放 | 欧美成a人片在线观看久 | 高清国产免费 | 一区二区久久 | 久久久婷婷一区二区三区不卡 | 精国品产一区二区三区有限公司 | 亚洲电影免费观看国语版 | 动漫孕妇被羞羞视频 | 欧美囗交| 一级色毛片 | 成年人激情在线 | 欧美男女爱爱视频 | 国产乱淫av| 亚洲性生活视频 | 日本一区二区不卡高清 | 国产成人精品免高潮在线观看 | 久草在线手机视频 | 视频www| 久久精品色 | 亚洲成人网一区 | 久草在线视频新 | 激情宗合 | 真人一级毛片免费 | 制服丝袜成人动漫 | 黄色网址免费在线 | 久久草在线观看视频 | 国产成人精品一区二区视频免费 | 日本网站在线看 | 中文字幕在线播放不卡 | 一本大道av| 99精品欧美一区二区 | 视频国产一区二区 | 久草在线手机视频 | 久草中文网 | 失禁高潮抽搐喷水h | av电影院在线观看 |