从PostgreSQL以不同格式返回的布尔值

时间:2013-02-22 09:29:28

标签: php postgresql yii

我们有两台服务器在两者上都有相同的代码。在其中一个上,对表的查询返回布尔值为真/假的t / f,另一个返回0/1。你知道为什么会这样吗?可能是yii设置还是服务器设置?

1 个答案:

答案 0 :(得分:0)

首先是一些背景。

许多RDBMS不支持bool类型,因此人们为此目的使用非常小的int字段。 PostgreSQL支持具有三个值的bool类型:truefalsenull(或未知)。

两个服务器都是PostgreSQL的问题并非100%明确。如果一个是PostgreSQL而另一个不是,那么人们会期望这种行为,所以这是首先要注意的事情。然而,即使两者都是PostgreSQL,数据库设计人员设计一组表来使用smallint或bits,然后更改为bool也不是闻所未闻。

如果两个系统都是PostgreSQL,那么在psql中唯一可能导致这种情况的是不同的表设计。看一下\d tablename并查看是否设置了一个使用bool而另一个设置为使用位或整数类型。