繁体   English   中英

了解 SQL Server Int 数据类型

[英]Understanding SQL Server Int Data Types

我有一个表,其中有一列名为PtObjIdINT数据类型。

根据我的理解,通过查看位于此处的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 ,因此另一个操作数被44237141916decimal

文章中给出了完整的优先级列表(以及可能的转换表),摘录如下:

10. float
11. real
12. decimal
13. money
14. smallmoney
15. bigint
16. int
17. smallint
18. tinyint 
...
25. nvarchar (including nvarchar(max))

(较低的数字 = 较高的优先级)

intnvarchar的情况下,优先级较高的是int ,这会导致 44237141916 溢出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM