PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak cytować ciągi znaków w Postgresie?

Jak wspomniano w komentarzach, większość baz danych używa pojedynczych cudzysłowów dla literałów łańcuchowych i podwójnych cudzysłowów dla identyfikatorów. MySQL jest raczej luźny i akceptuje również podwójne cudzysłowy dla literałów łańcuchowych, ale PostgreSQL jest (na szczęście) dość rygorystyczny. Więc chcesz użyć pojedynczych cudzysłowów:

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

lub używając where :

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

lub z rozsądnym wykorzystaniem funkcji cytowania sterownika bazy danych:

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

I zostawiając najlepsze na koniec, tak jak robią to rozsądni ludzie, używając symbolu zastępczego lub argumentów Hash do where :

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

Ostatni byłby najbardziej idiomatyczny dla Railsów, a dwa powyższe byłyby przydatne w bardziej złożonych warunkach, w których tworzenie łańcuchów jest albo zbyt kłopotliwe, albo nie działa (np. gdy potrzebujesz OR w klauzuli WHERE).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapisz wynik zapytania PostgreSQL w zmiennej Shell lub PostgreSQL

  2. Postgres pg_try_advisory_lock blokuje wszystkie rekordy

  3. Symbol wieloznaczny przedrostka Postgresql dla pełnego tekstu

  4. Spłaszczanie tablicy JSONB w postgresie

  5. Jaki typ danych wybrać json lub jsonb lub text