sql - Sql 如何比较 2 种不同的整数类型
问题描述
如果我有一个 column_1 的列类型为短(-32 768 和 32 767),如果我写一个 sql 查询。
Select *
from some_table
where column_1 < 2147483647
其中 2147483647 是 java INT_MAX。sql如何比较这些类型。
解决方案
SQL 标准似乎只声明该行为是实现定义的。(意思是:你的特定 DBMS 的 RTFM。)(我愿意接受纠正。)
然而,对于算术运算,该标准似乎要求相当多的事情朝着“不惜一切代价避免数据截断”的方向发展。因此,假设当涉及到数字比较时,实现同样会尽其所能避免任何数据截断,即在这种特殊情况下,“将 SMALLINT 向上转换为 INTEGER”并不是那么不合理。但这是假设而不是立法。
推荐阅读
- javascript - javascript delete object 属性正在删除整个对象
- c# - 为什么 Resharper / Jetbrains [NotNull] 带注释的接口会警告我 nullreferenceexceptions?
- python - 绝对导入导致 ModuleNotFoundError
- python - Pandas - 在子字符串/交集上连接两个数据框
- php - 如何将 3rd 方库正确导入 Laravel 项目?
- c++ - std::tuple-like 的命名要求?
- scala - 匹配泛型类的模式
- indexing - PowerDesigner 中的循环引用
- firebase - 强制 Firestore 数据库缓存数据库
- r - 获取数据框中所有列的小于常数的值的分数