假设我有一个PostgreSQL数据库,并且我将int64_t或uint64_t的最大值存储在NUERIC类型的列中(我不能使用BIGINT类型,因为在PostgreSQL中没有uint64_t的无符号变体).

看看https://doc.qt.io/qt-6/sql-types.html#postgresql-data-types,NUERIC似乎被映射到qreal(= double),显然它无法在不损失精度的情况下保存这些值.

是否有一种方法可以在不修改驱动程序的情况下将默认QAnalyst映射重新映射到其他内容?或者,是否有其他方法可以在DB端检索此类值,而无需将它们转换为字符串?

推荐答案

如果将数据库的数字精度策略设置为QSql::HighPrecision,则NUERIC字段将作为QStrings返回.

db.setNumericalPrecisionPolicy(QSql::HighPrecision);

Postgresql相关问答推荐

PostgreSQL:计数多列中的唯一值

Qt,PostgreSQL -从NUERIC列检索max int64_t/uint64_t值

PostgreSQL(container)中使用80K子分区表处理共享内存不足错误

PostgreSQL:重新创建主键值以匹配记录计数

将列类型从文本[]更改为jsonb[]

PostgreSQL\d命令:有办法只 Select 一列吗?

是否从表中 Select 值?巴什

Postgres 对 WHERE 子句并行使用两个索引

如何将 jackc/pgx 与连接池、上下文、准备好的语句等一起使用

联合所有 postgresql Select 子句保留顺序

PostgreSQL 错误:42P01:relation "[Table]" does not exist

我应该使用哪个 postgresql 包?

从左连接更新 Postgres

断言错误:Django-rest-Framework

适配器 Ecto.Adapters.Postgres 未编译

如何判断 PostgreSQL 事务中的待处理操作

使用 Homebrew 安装 icu4c 版本 63

Postgresql滚动删除旧行?

PostgreSQL 无法启动:server.key具有组或世界访问权限

基于秒的 Postgresql 日期差异