Sql如何比较2种不同的整数类型

时间:2018-06-11 12:23:04

标签: sql sqldatatypes

如果我有一个列类型为short的column_1(-32 768和32 767),如果我写了一个sql查询。

Select * 
from some_table 
where column_1 < 2147483647

其中2147483647是java INT_MAX。 sql如何比较这些类型。

2 个答案:

答案 0 :(得分:1)

SQL标准似乎只表明该行为是实现定义的。 (含义:您特定DBMS的RTFM。)(并且我愿意站着纠正。)

然而,对于算术的操作,标准似乎要求采取一些方向“不惜一切代价避免数据截断”。因此,假设在数字比较时,实现同样可以做任何事情以避免任何数据截断,即在这种特殊情况下,“将SMALLINT向上转换为INTEGER”,这并不是不合理的。 。但这不是立法的假设。

答案 1 :(得分:0)

两种数据类型之间的差异是存储大小和可能的值范围之一。

SQL server将处理隐式转换(必要时)以执行比较。在您的情况下,short将转换为int作为&#39; temp&#39;,然后将比较两个值并且&#39; temp&#39;将被删除。

所以你不必担心它。