为什么where post查询在postgresql中不起作用?

时间:2011-09-28 03:37:03

标签: ruby-on-rails-3 postgresql

我在rails应用程序上有一个ruby,我在其中查询布尔列Flag。代码是:

Merchant.where( “标志=?”,假)

但是这根本不起作用,唯一的结果是Merchants表没有列名“flag”。有没有什么办法解决这一问题?列名以大写字母开头,但正在搜索小写“flag”

1 个答案:

答案 0 :(得分:1)

如果在创建表时引用了列名,那么您将不得不永久引用它。所以,如果你从这开始:

create table merchants (
    -- ...
    "Flag" boolean
    -- ...
)

然后你必须使用

来引用它
Merchant.where('"Flag" = ?', false)

PostgreSQL将所有未加引号的标识符规范化为小写(不像标准所说的那样是大写),这就是错误消息抱怨flag而不是Flag的原因。

如果可以,您可能希望仅使用小写列名重建表。