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
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
Spravne by se v nette/database mely zapisovat dotazy nasledovne:
- klicova slova, nazvy fci atd. velkymi pismeny
- identifikatory (sloupce, tabulky) malymi
- hodnoty pres parametry
takze v tvem pripade:
$res = $table->where("REPLACE(LOWER(name), ?, ?) LIKE ?" , 'á', 'a', "%" . $name . "%");