语法结构:

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

更多相关文章

  1. SQL Server之JSON 函数详解
  2. ES6 变量声明,箭头函数,数组方法,解构赋值,JSON,类与继承,模块化练习
  3. 箭头函数的基础使用
  4. Python技巧匿名函数、回调函数和高阶函数
  5. 浅析android通过jni控制service服务程序的简易流程
  6. use ffmpeg to setup streaming server on android
  7. Android(安卓)bluetooth介绍(四): a2dp connect流程分析
  8. Android架构分析之使用自定义硬件抽象层(HAL)模块
  9. Android中OpenMax的适配层

随机推荐

  1. Android 人脸识别
  2. Android(安卓)ApiDemos示例解析(141):Vie
  3. 告别Dagger2模板代码:DaggerAndroid原理解
  4. Android 应用安装设置
  5. Android培训HandlerThread的使用及源码解
  6. Android(安卓)Handler机制
  7. 项目运行报错Error: Static interface me
  8. webView 的深入研究
  9. 【Android】IPC(进程间通信)
  10. Android中有关数据库SQLite的介绍