加入不同类型的字段时隐式转换

时间:2012-01-19 21:09:05

标签: sql sql-server-2008

我正在加入一个字段,该字段具有前导0格式的单位数字,而另一个字段没有前导0。当我意识到这一点时,我测试了我的查询,却发现它实际上工作得很好。然后我意识到我做了什么......我已经将一个nvarchar字段加入了一个int字段。我原本以为sql会给我一个错误,但显然它会将字符字段转换为int字段。

我意识到这可能不是一个好习惯而且我打算现在自己明确地投出它,但是我很好奇是否有SQL如何决定在这些情况下投射哪个字段的规则。是什么阻止它将int字段转换为字符类型(在这种情况下,我的查询将不再正常工作)?

1 个答案:

答案 0 :(得分:5)

确实存在规则。

CAST and CONVERT (Transact-SQL)了解可以转化为什么(“隐式转化”部分)。

Data Type Precedence (Transact-SQL)了解将被转换为什么,除非特别要求。