sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan citerer du strenge i Postgres

Som nævnt i kommentarerne bruger de fleste databaser enkelte anførselstegn for strenge bogstaver og dobbelte anførselstegn for identifikatorer. MySQL er ret slap og vil også acceptere dobbelte anførselstegn for strenge bogstaver, men PostgreSQL er (heldigvis) ret streng. Så du vil bruge enkelte anførselstegn:

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

eller ved at bruge where :

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

eller med fornuftig brug af databasedriverens tilbudsfaciliteter:

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

Og gemmer det bedste til sidst, sådan som fornuftige mennesker gør det ved at bruge en pladsholder eller Hash-argumenter til where :

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

Den sidste ville være den mest idiomatiske for Rails, og de to ovenstående ville være nyttig til mere komplekse forhold, hvor kædeføring enten er for besværlig eller ikke virker (såsom når du har brug for en OR i din WHERE-klausul).



  1. Sådan stopper du mysqld

  2. MySQL-forespørgsel forsvinder ikke efter at være blevet dræbt

  3. Mysql returnerer kun én række ved brug af Count

  4. Få direkte adgang til MySQL-databasen fra iPhone