首页 > 解决方案 > Sql 如何比较 2 种不同的整数类型

问题描述

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

Select * 
from some_table 
where column_1 < 2147483647

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

标签: sqlsqldatatypes

解决方案


SQL 标准似乎只声明该行为是实现定义的。(意思是:你的特定 DBMS 的 RTFM。)(我愿意接受纠正。)

然而,对于算术运算,该标准似乎要求相当多的事情朝着“不惜一切代价避免数据截断”的方向发展。因此,假设当涉及到数字比较时,实现同样会尽其所能避免任何数据截断,即在这种特殊情况下,“将 SMALLINT 向上转换为 INTEGER”并不是那么不合理。但这是假设而不是立法。


推荐阅读