sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo se citan cadenas en Postgres?

Como se menciona en los comentarios, la mayoría de las bases de datos usan comillas simples para cadenas literales y comillas dobles para identificadores. MySQL es bastante laxo y también aceptará comillas dobles para cadenas literales, pero PostgreSQL es (afortunadamente) bastante estricto. Entonces quieres usar comillas simples:

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

o usando where :

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

o con un uso sensato de las funciones de cotización del controlador de la base de datos:

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

Y guardando lo mejor para el final, de la forma en que la gente sensata lo hace usando un marcador de posición o argumentos Hash para where :

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

El último sería el más idiomático para Rails y los dos anteriores serían útiles para condiciones más complejas donde el encadenamiento es demasiado engorroso o no funciona (como cuando necesita un OR en su cláusula WHERE).