你如何引用Postgres中的字符串

在Rails中我使用MySQL并拥有

SnCl.all(:conditions => "col3=\"xx\"") 

但它不适用于Heroku中的Postgres DB

正如评论中所提到的,大多数数据库对字符串文字使用单引号,对标识符使用双引号。 MySQL相当宽松,也会接受字符串文字的双引号,但PostgreSQL(谢天谢地)非常严格。 所以你想使用单引号:

 SnCl.all(:conditions => "col3 = 'xx'") 

或使用where

 SnCl.where("col3 = 'xx'") 

或合理使用数据库驱动程序的报价设施:

 SnCl.where("col3 = #{SnCol.connection.quote('xx')}") 

并且最后保存最好的,明智的人使用占位符或哈希参数来做到这一点:

 SnCl.where('col3 = ?', 'xx') SnCl.where('col3 = :col3', :col3 => 'xx') SnCl.where(:col3 => 'xx') 

最后一个对于Rails来说是最惯用的,上面的两个对于更复杂的条件是有用的,在这些条件中,链接太麻烦或不起作用(例如当你在WHERE子句中需要OR时)。

你最好where适合自己病情的where使用。 看一下

http://guides.rubyonrails.org/active_record_querying.html#conditions