replace v dotazu postgersql

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vtitl
Člen | 29
+
0
-

Ahoj všem,

pokouším se vložit replace do dotazu, který by měl vypadat nějak takto:

SELECT id
FROM "donor" WHERE
replace(lower("name"), 'á', 'a') LIKE '%novak%'

vkládám to přímo do where, ale nevytváří se mi správný dotaz (apropo pracuji s postgresql):

$res = $table->where("replace(lower(name), 'á', 'a') LIKE ?" , "%" . $name . "%");

Výsledný dotaz vypadá takto a nefunguje (tj. funkce replace nenahradí á za a) správně:

SELECT id
FROM "donor" WHERE (replace(lower("donor_name"), 'á','"a"') LIKE '%novak%')

Jak dosáhnu toho, aby tam nebyly ty uvozovky navíc?

Díky moc!

David Matějka
Moderator | 6445
+
+2
-

Spravne by se v nette/database mely zapisovat dotazy nasledovne:

  1. klicova slova, nazvy fci atd. velkymi pismeny
  2. identifikatory (sloupce, tabulky) malymi
  3. hodnoty pres parametry

takze v tvem pripade:

$res = $table->where("REPLACE(LOWER(name), ?, ?) LIKE ?" , 'á', 'a', "%" . $name . "%");
Myiyk
Člen | 321
+
0
-

Dobrá informace, je to napsáno taky někde v dokumentaci? Já to tam nenašel ..