当前位置:  开发笔记 > 数据库 > 正文

T-SQL Cast与转换

如何解决《T-SQLCast与转换》经验,为你挑选了5个好方法。

什么时候应该使用CASTvs. 一般指导CONVERT?是否存在与选择其中一个相关的性能问题?是否更接近ANSI-SQL?



1> Matthew Farw..:

CONVERT是SQL Server特定的,CAST是ANSI.

CONVERT更灵活的是你可以格式化日期等.除此之外,它们几乎是一样的.如果您不关心扩展功能,请使用CAST.

编辑:

正如@beruic和@CF在下面的注释中所指出的,当使用隐式转换时(可能既不使用CAST也不使用CONVERT),可能会丢失精度.有关详细信息,请参阅CAST和CONVERT,尤其是此图:SQL Server数据类型转换图表.有了这些额外信息,原始建议仍然保持不变.尽可能使用CAST.


@beruic这是关于这张图片底部的文章http://i.msdn.microsoft.com/dynimg/IC170617.gif现在我认为可能在隐式转换中可能发生精度损失,并且在CAST中都不会发生或使用CONVERT.现在还不太清楚......
此外,我相信有一些数字转换应该使用CAST来保持精度,但我很难找到这个信息的可靠来源.
@beruic你是对的,MSDN中有信息:http://msdn.microsoft.com/en-us/library/ms187928.aspx在DECIMAL和NUMERIC类型之间进行转换时,需要CAST来保持精度.
@CF我同意它不是很清楚,应该有更多关于它的具体文档,所以让我们希望微软这样做.但很好地发现那里:)

2> jason saldo..:

Convert具有日期到字符串转换的样式参数.

http://msdn.microsoft.com/en-us/library/ms187928.aspx



3> 小智..:

CAST是标准SQL,但CONVERT不是(仅用于方言T-SQL),在日期时间转换时我们有一个很小的优势

使用CAST,您可以指示表达式和目标类型; 使用CONVERT,第三个参数表示转换的样式,某些转换支持这种转换,例如字符串和日期和时间值.例如,CONVERT(DATE,'1/2/2012',101)使用表示美国标准的样式101将文字字符串转换为DATE.

问候,



4> Elaskanator..:

为了扩展以上Shakti复制的答案,我实际上已经能够测量两个函数之间的性能差异。

我正在测试此问题的解决方案变体的性能,发现使用时,标准偏差和最大运行时间更大CAST

*时间(以毫秒为单位),根据类型的精度四舍五入到最接近的1/300秒DateTime



5> Atario..:

似乎没有人注意到的是可读性。有...

CONVERT(SomeType,
    SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    )

……可能比……更容易理解

CAST(SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    AS SomeType
    )


但是,我认为CAST通常更具可读性。即使对于长表达式,`CAST(Column1 AS int)`的读取比`CONVERT(int,Column1)`的读取更为逻辑
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有