【问题标题】:How Sql Compare 2 different integer typesSql 如何比较 2 种不同的整数类型
【发布时间】:2018-11-20 16:49:15
【问题描述】:

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

Select * 
from some_table 
where column_1 < 2147483647

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

【问题讨论】:

  • 可能是通过向上转换短片。但这可能取决于实际使用的 DBMS。请编辑您的问题并在标签中包含您正在使用的 DBMS。

标签: sql sqldatatypes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    两种数据类型的区别在于存储大小和可能的值范围。

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

    所以你不必担心。

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2015-06-11
      相关资源
      最近更新 更多