zoukankan      html  css  js  c++  java
  • 转换函数

    一般来说,转换函数大家并不陌生。就是使用cast 和 convert 进行数据类型的转换来达到表达式的比较,语句的拼接等效果。

    使用倒是很容易的。一般情况下这样使用就可以了。

    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值,这样纸在某些场景还是可以省下不少功夫。还是比较推荐使用的~

    哦~补充一句,祝各位新年快乐~添丁发财

  • 相关阅读:
    scrapy安装教程
    【bzoj4200】[Noi2015]小园丁与老司机 STL-map+dp+有上下界最小流
    【bzoj4889】[Tjoi2017]不勤劳的图书管理员 树状数组+分块+二分
    【bzoj4198】[Noi2015]荷马史诗 贪心+堆
    【bzoj2989】数列 KD-tree+旋转坐标系
    【bzoj4212】神牛的养成计划 Trie树+可持久化Trie树
    【bzoj4242】水壶 BFS+最小生成树+倍增LCA
    【bzoj4238】电压 DFS树
    【bzoj4240】有趣的家庭菜园 贪心+树状数组
    【bzoj4237】稻草人 分治+单调栈+二分
  • 原文地址:https://www.cnblogs.com/Gin-23333/p/5187499.html
Copyright © 2011-2022 走看看