转换函数
2016-02-13 11:18
197 查看
一般来说,转换函数大家并不陌生。就是使用cast 和 convert 进行数据类型的转换来达到表达式的比较,语句的拼接等效果。
使用倒是很容易的。一般情况下这样使用就可以了。
还有一个比较少用的,parse 函数。(PARSE 仅用于从字符串转换为日期/时间和数字类型。 对于一般的类型转换,请继续使用 CAST 或 CONVERT。 请记住,分析字符串值会带来一定的性能开销,这句是文档里面直接抄下来的)
既然有了 Convert 和 Cast ,为什么还需要一个 parse 函数呢?比如说有下面一种情况,我们一看就知道是2016年1月1日,但是使用Convert 和cast 就会报转换失败了,因为无法直接转换成对应的日期格式。那么这时候就要使用 parse 函数就可以了~然而parse 函数虽然方便,但是一般情况下并不推荐使用,因为使用parse函数设计到里面的字符分析,会带来性能开销
(Parse函数的说明 https://msdn.microsoft.com/zh-cn/library/hh213316(v=sql.120).aspx)
然而虽然有了转换的函数,但是有时候转换失败的时候还是会比较蛋疼的。比方说有时候一般来说我知道这列是一个varchar(50),但是里面全部存储的都是钱,那我就信心满满的使用一个
这样的语句,殊不知里面其中有一条数据写着 100CNY 那这个转换函数就死翘翘了。要不你就只能做类似的判断来防止了。
而到了2012以上的版本,Sql Server 支持了使用
Try_Convert()
Try_Cast()
Try_Parse()
3种函数,用法和 Convert,Cast ,Parse 一致,不一样的地方在于,如果转换失败并不会抛错,只会返回Null值,这样纸在某些场景还是可以省下不少功夫。还是比较推荐使用的~
哦~补充一句,祝各位新年快乐~添丁发财
使用倒是很容易的。一般情况下这样使用就可以了。
SELECT CONVERT(INT,'123') SELECT CAST('123' AS INT)
还有一个比较少用的,parse 函数。(PARSE 仅用于从字符串转换为日期/时间和数字类型。 对于一般的类型转换,请继续使用 CAST 或 CONVERT。 请记住,分析字符串值会带来一定的性能开销,这句是文档里面直接抄下来的)
既然有了 Convert 和 Cast ,为什么还需要一个 parse 函数呢?比如说有下面一种情况,我们一看就知道是2016年1月1日,但是使用Convert 和cast 就会报转换失败了,因为无法直接转换成对应的日期格式。那么这时候就要使用 parse 函数就可以了~然而parse 函数虽然方便,但是一般情况下并不推荐使用,因为使用parse函数设计到里面的字符分析,会带来性能开销
(Parse函数的说明 https://msdn.microsoft.com/zh-cn/library/hh213316(v=sql.120).aspx)
SELECT CONVERT(DATETIME,'2016年1月1日') SELECT CAST('2016年1月1日' AS DATETIME) SELECT CONVERT(DATETIME,'2016Jan01') SELECT CAST('2016Jan01' AS DATETIME)
SELECT PARSE('01Jan2016' AS DATETIME USING 'en-US') SELECT PARSE('2016Jan01' AS DATETIME USING 'en-US') SELECT PARSE('2016年1月1日' AS DATETIME USING 'zh-CN') ----------------------- 2016-01-01 00:00:00.000 ----------------------- 2016-01-01 00:00:00.000 ----------------------- 2016-01-01 00:00:00.000
然而虽然有了转换的函数,但是有时候转换失败的时候还是会比较蛋疼的。比方说有时候一般来说我知道这列是一个varchar(50),但是里面全部存储的都是钱,那我就信心满满的使用一个
select convert(money , Column1) from table
这样的语句,殊不知里面其中有一条数据写着 100CNY 那这个转换函数就死翘翘了。要不你就只能做类似的判断来防止了。
select case when ISNUMERIC(Column1) = 1 THEN convert(MONEY , Column1) ELSE NULL END FROM Table
而到了2012以上的版本,Sql Server 支持了使用
Try_Convert()
Try_Cast()
Try_Parse()
3种函数,用法和 Convert,Cast ,Parse 一致,不一样的地方在于,如果转换失败并不会抛错,只会返回Null值,这样纸在某些场景还是可以省下不少功夫。还是比较推荐使用的~
哦~补充一句,祝各位新年快乐~添丁发财
相关文章推荐
- 冥想
- OC-NSString从文件中读取字符串
- 《计算机硬件体系及IO优化》
- POJ 3468_A Simple Problem with Integers(线段树)
- POJ 3468_A Simple Problem with Integers(线段树)
- 【C语言】C语言常量和变量
- 【C语言】C语言常量和变量
- Rapid IO接口
- 一个简单的弹出对话框的shellcode(取自0day2一书)
- usaco 1.4.1 ariprog
- 【翻译自mos文章】在Oracle 12c中建立用户--避免ORA-65096 or ORA-65049错误
- java基础学习笔记之泛型
- leetcode:Additive Number
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
- SERDES总结
- android studio中做断点测试
- leetcode:Remove Invalid Parentheses
- Leetcode 118 根据行数输出杨辉三角形
- Java设计模式(二十二)----调停者模式
- poj 2002 hash(平面上若干点能够成多少正方形)