首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL-PostgreSQL特定类型的简单和值

PostgreSQL-PostgreSQL特定类型的简单和值
EN

Stack Overflow用户
提问于 2012-10-06 22:23:14
回答 2查看 707关注 0票数 1

我想使用一些数据库特定的数据类型,如money,point,inet等。可以将它们作为字符串插入。但是,我找不到如何获取它们的示例,因为它们不在传递给FromField.mkCompats函数的列表中。

当我尝试获取这样的值时,出现了一个异常

代码语言:javascript
运行
复制
*** Exception: Incompatible {errSQLType = "money", errHaskellType = "Text", errMessage = "types incompatible"}

有没有办法做到这一点,而不是求助于低级的postgresql-libpq?

EN

回答 2

Stack Overflow用户

发布于 2013-07-10 21:25:00

是的,postgresql-simple可以做到这一点!然而,以前并没有很好的文档记录。查看FromField module中的示例代码。

您可以做的是定义一个表示货币的类型(例如,文本的新类型),然后定义一个提供适当转换的FromField实例。规范转换将首先检查类型,然后检查数据是否不为空,最后尝试执行转换。因为money是postgresql本身提供的一个内置类型,所以它有一个稳定的类型OID,为了检查类型,你只需要使用typeOID函数。

如果类型是由postgresql的扩展提供的,则类型OID可能因数据库而异。在这种情况下,我建议使用typename函数来获取不变的字符串。

不幸的是,它还不是(还没有?)可以从额外的postgresql类型向现有的FromField实例添加转换。

(很抱歉回复晚了,我通常不会访问Stack Overflow。)

票数 2
EN

Stack Overflow用户

发布于 2012-10-07 23:16:03

我对haskell一无所知,但是,您应该能够只对查询中的值进行类型转换。例如:

代码语言:javascript
运行
复制
 select your_money_field::text from your_table;

再说一次,我不知道你是如何查询的。如果您正在使用某种ORM,那么您可能无法做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12760633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档