PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie zitiert man Strings in Postgres

Wie in den Kommentaren erwähnt, verwenden die meisten Datenbanken einfache Anführungszeichen für Zeichenfolgenliterale und doppelte Anführungszeichen für Bezeichner. MySQL ist eher lax und akzeptiert auch doppelte Anführungszeichen für String-Literale, aber PostgreSQL ist (zum Glück) ziemlich streng. Sie möchten also einfache Anführungszeichen verwenden:

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

oder mit where :

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

oder bei sinnvoller Nutzung der Quoting-Möglichkeiten des Datenbanktreibers:

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

Und das Beste kommt zum Schluss, so wie es vernünftige Leute tun, indem sie einen Platzhalter oder Hash-Argumente für where verwenden :

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

Die letzte wäre die idiomatischste für Rails und die beiden oben genannten wären nützlich für komplexere Bedingungen, bei denen die Verkettung entweder zu umständlich ist oder nicht funktioniert (z. B. wenn Sie ein OR in Ihrer WHERE-Klausel benötigen).