Autor Zpráva
Wall
Profil *
Ahoj. Jak mám udělat v postgres, abych vyhledával všechny uživatele třeba "Wall" ale i "wall" ale už né "wal" protože jsem zjistil že postgres rozlišuje velikosti písmen. Našel jsem že jde udělat select * from uzivatele where nick ~* 'wall'; ale to mi najde i uživatele wal a když to udělám takhle select * from uzivatele where nick = 'wall'; tak zase mi to nenajde Wall. Potřeboval bych to nějak spojit.
Kajman
Profil
Např.
where lower(nick) = 'wall'

Ale může to mít neblahý vliv na výkon, řešením by mohlo být vytvoření indexu nad výsledkem té funkce lower (nejsem si jistý, ale tipuji, že pgsql to umět bude).
Wall
Profil *
A jak vytvořím index nad výsledkem té funkce lower? Neni tedy lepší používat MySQL když s takovou banalitou jsou takové problémy?
Kajman
Profil
http://www.postgresql.org/docs/9.1/static/indexes-expressional.html

Zůstal bych u pgsql :-)
Wall
Profil *
A u toho postgres se to třeba nedá vypnout v nějakém setingu nebo tak něco?
Kajman
Profil
Pro ten sloupec můžete použít typ citext nerozlišující velikost, ale není to vždy lepší než využití lower funkce v dotazech.

Také si můžete při vytváření databáze zvolit porovnání nerozlišující velikost písmen, pokud se to nikdy nemá nikde rozlišovat.
Wall
Profil *
No asi se to nemusí nikdy nikde rozlišovat si myslim teď... protože hesla jsou zahašovaná, a tam je to zapsaný hexadecimálně, u mailů je to jedno... asi to neni nikde potřeba. Ale bude mi to tam nadále ukládat velká a malá písmena jo? jenom je to nebude rozlišovat mezi sebou ano?


jako v MySQL
Wall
Profil *
Já to tady teda nikde nemůžu najít http://www.postgresql.org/docs/9.1/static/sql-createdatabase.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: