Sql Server 2012 轉換函數的比擬(Cast、Convert和Parse)。本站提示廣大學習愛好者:(Sql Server 2012 轉換函數的比擬(Cast、Convert和Parse))文章只能為提供參考,不一定能成為您想要的結果。以下是Sql Server 2012 轉換函數的比擬(Cast、Convert和Parse)正文
語法構造:
1. Cast
語法構造:CAST ( expression AS data_type [ ( length ) ] )
2. Convert
語法構造:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
3. Parse
語法構造:PARSE ( string_value AS data_type [ USING culture ] )
個中,Parse 為 Sql Server 的新特征 expression 必需要為被轉換類型的字符串情勢
機能剖析:
總結:
1. Convert 和 Cast 的差別
CONVERT是專對SQL Server應用的,使日期與時光值,小數之間轉換具有更寬的靈巧性。
CAST是兩種功效中更具ANSI尺度的功效,即固然更具便攜性(好比,應用CAST的函數能更輕易的被其它數據庫軟件應用),但功效絕對弱一些。不外,當小數轉化為數值,並保存原始表達式中的小數數值時,依然須要應用CAST
2. Convert 和 Parse 的差別
二者除語法的差別,就是功效下面的差別,Convert 功效更壯大,Parse 則為 Sql Server 2012 新增的功效,同時功效強大許多的,只能將 字符串 轉換為 數字類型 或許 日期類型,由於數字類型 或 日期類型長度都很小的,所以 Parse 所帶來的機能簡直弗成能有年夜的轉變的,以後我也做了年夜量的比擬,發明 Parse 是在絕年夜多半情形下都是可以替換的
3. 綜合比擬
a. 假如 是做針對 Sql Server 的做開辟,建議只用 Convert 辦法
b. 假如斟酌語句跨平台,則盡可能用 Cast,如 SQL 語句既能在 Sql Server 上履行,又能在 MySql 下面履行
c. Parse 在 Sql Server 2012 中就是一個雞肋,經由1 下晝的實戰研討和翻閱MSDN,都沒有找到它的優勢,假如比語法,Cast 的語法構造和它一樣,假如比功效,又太強大,完整不克不及和Cast 和 Convert 做比擬,所以,您就把 Parse 忘卻失落吧
機能剖析所做的試驗:
1. Convert 和 Parse 轉換為字符串的比擬
DBCC FreeProcCache
set statistics profile on
select top 1 parse(name as bigint) from test_Parse
select top 1 convert(bigint,name) from test_Parse
個中 name 為 nvarchar(1000) 的一個一段,值為:1231238912378912128
履行過以後,會發明,二者的履行籌劃完整雷同,不管是對 CPU 的消費,照樣對 IO的消費,沒有任何機能差異
2. Money 和 DateTime 類型的轉換比擬
-- DateTime
DBCC FreeProcCache
declare @date varchar(100) = '2012/07/19 14:57:09.760'
select CONVERT(datetime,@date) as date
select Parse(@date as datetime using 'zh-CN') as date
--Money
SELECT PARSE('?345,98' AS money USING 'de-DE') AS Result
Select Convert(money,'?345,98',1) AS Result
3. Parse 的專利,字符型日期到 datetime 的轉換
SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result
SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'zh-CN') AS Result
-- Cast 和 Convert 對這類類型的字符串都是不支撐的
--SELECT cast('Monday, 13 December 2010' AS datetime2) AS Result
--SELECT Convert(datetime,'Monday, 13 December 2010') AS Result
在機能方面異樣沒甚麼差別,然則比擬功效時,Parse 卻要比 Convert 錯太多
嚴重疑惑, Parse 自己並沒有找到太多的優勢和運用場景,或許因為自己才疏學淺,找不到更好的,有理解,請賜教