Sql Server 2012 转换函数的比较(Cast、Convert和Parse)

来源:asp之家 时间:2012-08-21 10:21:40 

语法结构:

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 本人并没有找到太多的优势和应用场景,或者由于本人才疏学浅,找不到更好的,有懂得,请赐教

标签:Cast,Convert,Parse
0
投稿

猜你喜欢

  • 像数艺术

    2010-02-08 12:33:00
  • 滚动条样式的css代码介绍

    2008-10-21 10:56:00
  • SQL"不能为新插入的行确定标识"错误的解决方法

    2011-04-07 11:05:00
  • asp获取远程网页的指定内容的实现代码

    2011-02-16 10:41:00
  • 用javascript给表格加滚动条

    2008-10-15 10:03:00
  • 交互设计实用指南系列(2) –可及

    2010-01-21 12:48:00
  • 日期垂直排列的两种技巧

    2009-08-28 12:38:00
  • 讲解SQL Server危险扩展存储删除和恢复

    2008-12-09 14:30:00
  • 超越质检员——看图购beta版的思考

    2009-04-15 12:11:00
  • DHTML+XML+ASP+CSS的树形目录

    2008-10-24 14:29:00
  • Javascript: 为<input>设置readOnly属性问题,希望大家以后要小心

    2009-07-23 20:24:00
  • PL/SQL实现Oracle数据库任务调度

    2010-07-20 12:57:00
  • asp用正则解析远程图片地址,用XMLHTTP将其保存

    2007-10-26 12:34:00
  • WEB2.0网页制作标准教程(11)不用表格的菜单

    2008-02-19 19:36:00
  • 在页面中动态载入外部javascript

    2007-09-30 12:52:00
  • MYSQL--自身字段约束级联删除

    2010-11-02 11:42:00
  • 全国哀悼日 建议站点换素装(附代码)

    2008-05-19 12:05:00
  • 10个提高网站可用性的实用技巧[译]

    2009-06-12 12:37:00
  • 新手教程:如何设置五大类MySQL参数

    2010-03-03 16:40:00
  • 两个百度WEB面试题 怎么做?

    2010-09-03 18:40:00
  • asp之家 网络编程 m.aspxhome.com