Autor | Zpráva | ||
---|---|---|---|
Wall Profil * |
#1 · Zasláno: 3. 9. 2013, 15:40:58
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 |
#2 · Zasláno: 3. 9. 2013, 15:57:00
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 * |
#3 · Zasláno: 3. 9. 2013, 15:59:52
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 |
#4 · Zasláno: 3. 9. 2013, 16:01:09
http://www.postgresql.org/docs/9.1/static/indexes-expressional.html
Zůstal bych u pgsql :-) |
||
Wall Profil * |
#5 · Zasláno: 3. 9. 2013, 16:03:46
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 * |
#7 · Zasláno: 3. 9. 2013, 16:32:46 · Upravil/a: Wall
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 * |
#8 · Zasláno: 4. 9. 2013, 14:50:34
Já to tady teda nikde nemůžu najít http://www.postgresql.org/docs/9.1/static/sql-createdatabase.html
|
||
Časová prodleva: 11 let
|
0