转换函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换函数相关的知识,希望对你有一定的参考价值。

一般来说,转换函数大家并不陌生。就是使用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值,这样纸在某些场景还是可以省下不少功夫。还是比较推荐使用的~

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

 

以上是关于转换函数的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

在代码片段中包含类型转换

如何将此 JavaScript 代码片段翻译成 Parenscript?

sql 日期转换代码片段 - Dato,120,konvertere

HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url