PostgreSQL 将尾随零添加到数字中

2023-11-21

最近我将一个数据库迁移到 PostgreSQL,其中一些列定义为numeric(9,3) and numeric(9,4)。在测试应用程序时,我发现当数据保存到这些列时,插入的值中会添加尾随零。我正在使用 Hibernate,我的日志显示为准备好的语句构建的正确值。

我插入的数据的一个例子是0.75 in the numeric(9,3)列和存储的值是0.750。另一个例子numeric(9,4)列:我插入值12DB 持有12.0000.

我发现这个相关问题:postgresql 不带尾随零的数字类型。但除了引用 9.x 文档说不添加尾随零之外,它没有提供其他解决方案。从这个问题中,答案引用了文档(我也读过),其中说:

数字值以物理方式存储,没有任何额外的前导或 尾随零。因此,列的声明精度和小数位数 是最大值,而不是固定分配。

然而,就像那个问题海报一样,我看到添加了尾随零。 Hibernate 在日志中生成的原始插入不会显示这种额外的行李。所以我假设这是我没有正确设置的 PostgreSQL 东西,我只是找不到我是如何弄错的。


如果我在这种情况下正确理解“强制”,我想就是这样。这是来自 PostgreSQL 文档:

数字列的最大精度和最大小数位数 可以配置。要声明数字类型的列,请使用以下语法:

NUMERIC(precision, scale)

精度必须为正,小数位数必须为零或正。 或者:

NUMERIC(precision)

选择比例 0。指定:

NUMERIC

没有任何精度或比例创建一列 可以存储任何精度和小数位数的数值,最多 精度的实施限制。这样的专栏不会 将输入值强制为任何特定比例,而数字 具有声明比例的列将强制输入值达到该比例。

大胆强调我的。

原来是这样误导性的稍后在同一部分中:

数值是物理上的存储时没有任何额外的前导或 尾随零。因此,列的声明精度和小数位数 是最大值,不是固定分配.

再次大胆强调我的。

对于精度部分来说可能是这样,但由于在定义比例时它被强制,尾随零被添加到输入值以满足比例定义(如果太大,我会假设被截断)。

我在用精度、规模约束执行的定义。在数据库插入期间,尾随零被添加到数字刻度中,这似乎支持强制转换,并且与不添加尾随零的声明相冲突。

无论正确与否,我都必须在选择后在代码中处理问题。对我来说幸运的是受影响的属性是BigDecimal所以去掉尾随零很容易(尽管不优雅)。如果有人有更好的建议,不让 PostgreSQL 在插入时向数字刻度添加尾随零,我愿意接受他们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL 将尾随零添加到数字中 的相关文章

随机推荐

  • 如何在 C 中的分叉进程上使用 POSIX 信号量?

    我想分叉多个进程 然后在它们上使用信号量 这是我尝试过的 sem init sem 1 1 semaphore pshared value if pid 0 parent process wait NULL wait all child p
  • Python lambda 和作用域[重复]

    这个问题在这里已经有答案了 鉴于这段代码 funcs for x in range 3 funcs append lambda x print f for f in funcs 我希望它能打印出来 0 1 2 而是打印 2 2 2 关于 l
  • OSX 10.13.4 上堆栈安装 ghc-mod 因依赖项冲突而失败

    当我尝试通过堆栈安装 ghc mod 时 我最终遇到了这些依赖项冲突 Error While constructing the build plan the following exceptions were encountered In
  • 如何通过ldap中的域名获取用户的用户名和SID

    我正在尝试获取特定域的用户信息 该域将作为程序的输入 根据域名 它应该返回用户名 或用户的 NT Id 和 SID 的列表 我是 LDAP 编程新手 任何人都可以帮助我获取此列表 如果您使用 NET 3 5 及更高版本并谈论 Active
  • JavaFX 在场景中嵌入场景

    我有一个使用 javafx 场景来渲染某些内容的应用程序 我想将该渲染放入我制作的一些 GUI 中 也在 javafx 中 我该怎么做呢 基本上有一些容器我可以将场景放入其中 然后将该容器放入 GUI 中 抱歉 如果这是一个新手问题 我是
  • 类型特征:检查类是否具有特定功能(可能继承)

    我知道有很多可能的方法来检测一个类是否具有特定的功能 但没有一种方法真正适合我的具体情况 我当前用于检查成员函数是否正确的实现 除了继承函数之外 include
  • 图片框问题

    我有个问题 我有 3 个图片框 里面有 3 张不同的图像如图所示 我可以设置什么图片框3所以两张图片看起来都一样 EDITED 我想将pictureBox3移动到pictureBox2上 所以没有选项将它们合并为单个图像 确保图像在pict
  • unix管道多个作家

    如果有多个线程将固定长度数据 例如 4 字节地址 写入单个管道 并且该管道有一个读取器 是否可以保证读取器按顺序获取字节 换句话说 就是write 到管道原子 http pubs opengroup org onlinepubs 00969
  • 如果还不是可迭代的,则 Pythonic 转换为单例可迭代

    假设我有 def distance2 vector1 vector2 zipped zip vector1 vector2 difference2 vector2 vector1 2 for vector1 vector2 in zippe
  • 表单提交后隐藏/显示 Div?

    你好 我在让它工作时遇到了一些麻烦 非常简单 我想做的就是在提交 html 表单后显示一个 div
  • MVC 中的 MVC-ControllerTypeCache.xml

    在调试 ASP NET MVC 源时我发现 MVC ControllerTypeCache xml 文件被使用 但我无法理解这个文件的用途 我的意思是这个文件存储在哪里 asp net MVc 如何使用这个文件 请帮忙 该文件用于缓存控制器
  • Android项目的Gradle组装失败,找不到R.txt

    抱歉我的英语不好 我正在尝试使用 Android Studio 将我的项目迁移到 Gradle 但目前构建失败processDebugResources 错误信息 任务 app processAdultDebugResources 执行失败
  • 轻松测量经过的时间

    我正在尝试使用time 测量我的程序的各个点 我不明白的是为什么之前和之后的值是相同的 我知道这不是分析我的程序的最佳方式 我只是想看看需要多长时间 printf MyProgram before time ld n time NULL d
  • 绑定时 ObjectContext 实例已被释放[重复]

    这个问题在这里已经有答案了 这是我的代码 public class JobsRepository BaseNewsletterRepository public IEnumerable
  • 使用 Codeigniter 获取 PUT 请求

    我现在有一个 CodeIgniter 问题 我使用REST 控制器库 这真的很棒 创建一个 API 但我无法收到 PUT 请求 这是我的代码 function user put user id this gt get id echo use
  • “现在无法切换到旧模式” - tls.connect 函数中的 Node.JS apn 模块错误

    我正在尝试实现 Node JS apn 模块来连接到 APNS Apple 推送通知服务 以从运行 Ubuntu 12 04 的 Amazon EC2 实例上托管的节点服务器 使用 ExpressJS 将通知推送到 iPhone 设备 我收
  • http请求会自动重试吗?

    我正在尝试使用 GoLang 将数据推送到 apache 服务器 假设我的apache服务器暂时停止了 然后我的http请求会自动重试 我正在使用这个声明 resp err http DefaultClient Do req if err
  • 如何将重力应用于弹跳球应用程序?

    我编写了一个相当简单的java应用程序 它允许您拖动鼠标 并根据您拖动鼠标的长度 它会朝那个方向射出一个球 并在球移动时从墙壁上弹起 这是一个快速截图 替代文本http img222 imageshack us img222 3179 ba
  • 不同的WAR文件,共享资源

    假设您有多个应用程序 它们共享相同的代码和大多数其他资源 但外观和感觉有所不同 一些标签发生变化等 想想品牌 如果每个 Web 应用程序都放入自己的 WAR 文件中 那么您将共享资源放在哪里 我已经使用类路径来共享类和属性文件 但是 jav
  • PostgreSQL 将尾随零添加到数字中

    最近我将一个数据库迁移到 PostgreSQL 其中一些列定义为numeric 9 3 and numeric 9 4 在测试应用程序时 我发现当数据保存到这些列时 插入的值中会添加尾随零 我正在使用 Hibernate 我的日志显示为准备