如果我有一个列类型为short的column_1(-32 768和32 767),如果我写了一个sql查询。
Select *
from some_table
where column_1 < 2147483647
其中2147483647是java INT_MAX。 sql如何比较这些类型。
答案 0 :(得分:1)
SQL标准似乎只表明该行为是实现定义的。 (含义:您特定DBMS的RTFM。)(并且我愿意站着纠正。)
然而,对于算术的操作,标准似乎要求采取一些方向“不惜一切代价避免数据截断”。因此,假设在数字比较时,实现同样可以做任何事情以避免任何数据截断,即在这种特殊情况下,“将SMALLINT向上转换为INTEGER”,这并不是不合理的。 。但这不是立法的假设。
答案 1 :(得分:0)
两种数据类型之间的差异是存储大小和可能的值范围之一。
SQL server
将处理隐式转换(必要时)以执行比较。在您的情况下,short
将转换为int
作为&#39; temp&#39;,然后将比较两个值并且&#39; temp&#39;将被删除。
所以你不必担心它。