[英]Understanding SQL Server Int Data Types
我有一个表,其中有一列名为PtObjId
的INT
数据类型。
根据我的理解,通过查看位于此处的Microsoft 文档的线程。 我最多只能存储 +/- 2,147,483,647 的值
如果我运行此查询:
Select top 100 *
from [table]
where [PtObjId] IN (44237141916)
应该不会报错吧?
为什么此查询错误如下:
select top 100 *
from [table]
where [PtObjID] IN ('44237141916')
但最上面的查询没有出错?
这篇sqlshack 文章解释了有关 SQL-Server 中隐式转换的详细信息。
必须为比较隐式转换一个值。 文字44237141916
被视为decimal
,其优先级高于int
,因此另一个操作数被44237141916
为decimal
。
文章中给出了完整的优先级列表(以及可能的转换表),摘录如下:
10. float
11. real
12. decimal
13. money
14. smallmoney
15. bigint
16. int
17. smallint
18. tinyint
...
25. nvarchar (including nvarchar(max))
(较低的数字 = 较高的优先级)
在int
和nvarchar
的情况下,优先级较高的是int
,这会导致 44237141916 溢出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.