PostgreSQL 数值型17 Mar 2025 | 5 分钟阅读 在本节中,我们将了解 PostgreSQL 数值数据类型 的工作原理,它允许我们存储数值数据。我们还将查看 数值数据类型 的 示例。 什么是 PostgreSQL NUMERIC 数据类型?在 PostgreSQL 中,Numeric 数据类型 用于 存储具有各种有效数字的数字。换句话说,我们可以说 PostgreSQL Numeric 数据类型 用于在表中指定需要数量或货币金额且需要精确度的数值数据。 数值数据类型包含以下内容:
下表包含 PostgreSQL 支持的所有 数值数据类型
PostgreSQL 数值数据类型语法PostgreSQL 数值数据类型的语法如下: 在上面的语法中,我们使用了以下参数
我们可以通过以下示例理解精度和标度的概念 假设我们有数字 2356.78。 在这个数字中,精度是 6,标度 是 2。 注意:在 PostgreSQL 中,Numeric 数据类型小数点前可以有高达 131,072 位数字,小数点后可以有高达 16,383 位数字。Numeric 数据类型的标度可以是正数 (+) 或零 (0)。以下语法显示了带有 标度为零 的 Numeric 数据类型 如果我们忽略 精度和标度,我们可以拥有任何精度和标度,直到上面提到的精度和标度限制。 注意:在 PostgreSQL 中,Numeric 和 Decimal 类型是相互对应的,它们也都遵循 SQL 标准。如果我们不需要 精度,则不能使用 Numeric 数据类型,因为对 Numeric 值 的计算通常比 双精度、浮点数 和 整数 慢。 PostgreSQL 数值数据类型示例让我们看一些示例,以了解 PostgreSQL 数值数据类型 的工作原理。 存储数值的示例如果我们想要存储比 Numeric 列 声明的标度更大的值,PostgreSQL 会将其舍入到指定的小数位数。 为此,我们将使用 CREATE 命令创建一个名为 Items 的新表,并使用 INSERT 命令插入一些值。 在这里,我们还使用 drop 命令 来删除数据库中已存在的表。 我们将使用 CREATE 命令在 Organization 数据库 中创建 Items 表 输出 执行上述命令后,Items 表已成功创建,如下面的屏幕截图所示 ![]() 一旦 Items 表生成,我们就可以使用 INSERT 命令插入一些物品及其价格,这些价格的标度超过了 item_price 列中声明的标度 输出 执行上述命令后,我们将得到以下输出,显示值已成功插入 Items 表中。 ![]() 因为 item_price 列的标度是 2,PostgreSQL 会将值 300.512, 300.513, 300.514 舍入到 300.51。 在创建并插入 Items 表的值之后,我们将使用 SELECT 命令返回 Items 表的所有行 输出 执行上述命令后,我们将获得以下结果 ![]() 如果我们想存储一个精度超过声明精度的值,PostgreSQL 会显示一个错误,正如我们在下面的示例中看到的 输出 执行上述命令后,我们将得到以下错误:numeric 字段溢出,这意味着一个具有 精度 5 和标度 2 的字段必须舍入到绝对值小于 10^3 的值。 ![]() PostgreSQL NUMERIC 数据类型和 NaN 示例让我们来看一个 PostgreSQL Numeric 数据类型和 NaN 的示例。 如果我们想获取数值,PostgreSQL NUMERIC 数据类型还可以有一个特殊值,称为 NaN,NaN 代表 非数字 在下面的示例中,我们将 item_id 为 1 的 item_price 更新为 NaN 输出 执行上述命令后,我们将看到下面的消息窗口,显示特定值已成功更新到 Items 表中。 ![]() 注意:在上面的 Update 语句中,我们使用了单引号 ('') 来包含 NaN。现在我们使用 SELECT 命令从 Items 表中获取所有记录 输出 执行上述语句后,我们将获得以下结果 ![]() 通常,NaN 不等于任何数字,包括它本身,这意味着表达式 NaN = NaN 将返回 FALSE。 但是,两个 NaN 值可以相等,并且 NaN 比其他数字更大。此执行允许 PostgreSQL 对数值进行分类并在 基于树的索引 中使用它们。 为了根据 Item_prices 对 Items 进行分类,我们将使用以下命令 输出 执行上述命令后,我们将获得以下输出 ![]() 如上面的屏幕截图所示,NaN 大于值 300.51。 概述在 PostgreSQL 数值数据类型 部分,我们学习了以下主题:
下一主题PostgreSQL 字符 |
我们请求您订阅我们的新闻通讯以获取最新更新。