什么时候应该使用CAST和CONVERT的一般指导是什么?选择其中一种与另一种是否存在性能问题?是否更接近于ANSI-SQL?
当前回答
您也不应该使用CAST来获取哈希算法的文本。CAST(HASHBYTES('…')AS VARCHAR(32))与CONVERT(VARCHAR(32), HASHBYTES('…'),2)不同。如果没有最后一个参数,结果将是相同的,但不是一个可读的文本。据我所知,你不能在CAST中指定最后一个参数。
其他回答
为了扩展上面Shakti复制的答案,我实际上已经能够测量两个函数之间的性能差异。
我正在测试这个问题的各种解决方案的性能,发现使用CAST时,标准偏差和最大运行时间更大。
*时间以毫秒为单位,根据DateTime类型的精度舍入到最接近1/300秒
Convert有一个用于日期到字符串转换的样式参数。
http://msdn.microsoft.com/en-us/library/ms187928.aspx
可读性似乎还没有人注意到。拥有……
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
可能比……更容易理解。
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
您也不应该使用CAST来获取哈希算法的文本。CAST(HASHBYTES('…')AS VARCHAR(32))与CONVERT(VARCHAR(32), HASHBYTES('…'),2)不同。如果没有最后一个参数,结果将是相同的,但不是一个可读的文本。据我所知,你不能在CAST中指定最后一个参数。
CAST采用ANSI标准。在可移植性的情况下,这将在其他平台上工作。CONVERT是sql server专用的。但是功能非常强。您可以为日期指定不同的样式
推荐文章
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?
- GROUP BY with MAX(DATE)
- 删除id与其他表不匹配的sql行
- 等价的限制和偏移SQL Server?
- 关于数据库,每个开发人员应该知道些什么?
- 如何从SQL Server中的字符串中剥离所有非字母字符?
- 为什么我不能在DELETE语句中使用别名?
- 在SQL Server Management Studio中保存带有标题的结果
- "where 1=1"语句
- 如何选择一个记录和更新它,与一个单一的查询集在Django?
- 多语句表值函数vs内联表值函数
- 是使用各有一个模式的多个数据库更好,还是使用一个数据库有多个模式更好?
- 如何从Oracle的表中获取列名?
- NOLOCK提示在SELECT语句中的作用