sql >> Databáze >  >> RDS >> PostgreSQL

Jak citujete řetězce v Postgresu

Jak bylo zmíněno v komentářích, většina databází používá jednoduché uvozovky pro řetězcové literály a dvojité uvozovky pro identifikátory. MySQL je dost laxní a bude akceptovat i dvojité uvozovky pro řetězcové literály, ale PostgreSQL je (naštěstí) dost striktní. Takže chcete použít jednoduché uvozovky:

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

nebo pomocí where :

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

nebo s rozumným využitím citačních prostředků ovladače databáze:

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

A uložit to nejlepší na konec, jak to rozumní lidé dělají pomocí zástupného symbolu nebo hash argumentů pro where :

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

Poslední by byl pro Rails nejidiomatičtější a dva výše uvedené by byly užitečné pro složitější podmínky, kde je řetězení buď příliš těžkopádné, nebo nefunguje (například když potřebujete OR v klauzuli WHERE).



  1. Jak nahradit všechny výskyty řetězce jiným řetězcem na serveru SQL – REPLACE()

  2. Uložte výsledek minusového dotazu s více sloupci do proměnné v Oracle PL/SQL

  3. Zkontrolujte, zda v poli Postgres existuje NULL

  4. Vložte čas s časovým pásmem letní čas