Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 4. 9. 2007, 14:37:54
Zdravím, narazil jsem na problém s mým vyhledáváním v databázi.
tento dotaz nenalezne nic SELECT titulek FROM clanky WHERE perex RLIKE '[l|L][u|ů|ú|ú|U|Ů|Ú|Ú][h|H][a|á|á|A|Á|Á][c|č|C|Č][o|ó|ó|O|Ó|Ó][v|V][i|í|í|I|Í|Í][c|č|C|Č][e|é|é|ě|E|É|É|Ě]' a tento mi správně vyhodí všechny záznamy kde se vyskytuje slovo Luhačovice SELECT titulek FROM clanky WHERE perex RLIKE '[l|L][u|ů|ú|ú|U|Ů|Ú|Ú][h|H][a|á|á|A|Á|Á]č[o|ó|ó|O|Ó|Ó][v|V][i|í|í|I|Í|Í][c|č|C|Č][e|é|é|ě|E|É|É|Ě]' Přitom scripty i db mám v UTF 8 :( |
||
Kajman_ Profil * |
#2 · Zasláno: 4. 9. 2007, 15:08:52
Možná to bude tím varováním v manuálu, že to s utf-8 není bez problémů, viz.
http://dev.mysql.com/doc/refman/4.1/en/string-comparison-functions.htm l#operator_regexp Co si odstranit diakritiku a zmenšit všechna písmenka a uložit si perex2. Vyhledávání by pak mělo být i rychlější. |
||
Anonymní Profil * |
#3 · Zasláno: 4. 9. 2007, 15:17:11
Možná to bude tím varováním v manuálu, že to s utf-8 není bez problémů, viz.
http://dev.mysql.com/doc/refman/4.1/en/string-comparison-functions.htm l#operator_regexp Co si odstranit diakritiku a zmenšit všechna písmenka a uložit si perex2. Vyhledávání by pak mělo být i rychlější. To s tím perexem byl jen názorný příklad |
||
Anonymní Profil * |
#4 · Zasláno: 4. 9. 2007, 15:23:11
Takže jedině předělat kódováni DB na něco jiného
|
||
Časová prodleva: 24 dní
|
|||
ViX612 Profil * |
#5 · Zasláno: 28. 9. 2007, 14:54:54
neměla by konfliktní (zejména multibyte) písmena být v regulárním výrazu v kulatých závorkách (c|č|C|Č)? Je tady asi nejpravděpodobnější, že v regulárním výrazu je [c|č|C|Č] interpretováno č jako dvojice znaků, která se v regulárním výrazu pronese a způsobí problémy při procházení řetězců.
|
||
Časová prodleva: 17 let
|
0