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

Bra*_*ore 2 sql sql-server-2008

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

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

GSe*_*erg 5

确实存在规则.

CAST和CONVERT(Transact-SQL)学习什么可以转换为什么("隐式转换"部分).

数据类型优先级(Transact-SQL),以了解将被转换为什么,除非特别要求.