≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

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

人气:492 时间:2019-09-14

这篇文章主要为大家详细介绍了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 本人并没有找到太多的优势和应用场景,或者由于本人才疏学浅,找不到更好的,有懂得,请赐教

本文来自:http://www.q1010.com/179/7841-0.html

注:关于Sql Server 2012 转换函数的比较(Cast、Convert和Parse)的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • SQL Server CREATE FUNCTION sqlserver用户定义函数
  • sqlserver 查询数据库大小的方法
  • SQL Server 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
  • SQLServer 触发器 数据库进行数据备份
  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法
  • SQL Server做购物车系统时利用到得几个sqlserver 存储过程
  • SQLServer 优化SQL语句 in 和not in的替代方案
  • win2003 安装 sqlserver 2005的方法
  • SQL Server当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
  • SQL Server分页存储过程(三)在sqlserver中打造更加准确的分页结果
上一篇:SQL Server SQL语句分组获取记录的第一条数据的方法
下一篇:SQL Server 一列保存多个ID(将多个用逗号隔开的ID转换成用逗号隔开的名称)
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。