Autor Zpráva
suvel
Profil
Nějak se pořád nemůžu dobrat správné syntaxe: K regulárnímu výrazu v příkazu
SELECT * FROM tabulka WHERE Prijmeni REGEXP 'nov+'
potřebuju přidat identifikátor "i" (ignore case), který způsobí (má způsobit?) nerozlišování malých/velkých písmen, tak, abych jako výsledek dostal například i "Novák". Poradíte?
fajzen
Profil
suvel:
stačí dať tabuľke kódovanie, ktoré končí _ci (case insensitive)
fajzen
Profil
suvel:
sorry, tak nie... podľa manuálu by mal byť REGEXP case insensitive...
suvel
Profil
fajzen:
Case insensitive je REGEXP s identifikátorem "i", defaultně je case sensitive (podle všech dostupných informací). Ale zaboha nemůžu nikde najít syntaxi...
fajzen
Profil
suvel:
Citujem dokumentáciu: REGEXP is not case sensitive, except when used with binary strings. (Odkaz)

ale má problémy s písmenami s diakritikou... to by sa v tomto prípade dalo vyriešiť použitím kódovania s koncovkou _ci (ako som spomínal) a tvarom query
SELECT * FROM tabulka WHERE Prijmeni LIKE 'NOVÁ%' 
(vyberie aj Novák)
Keeehi
Profil
suvel:
Řešení jsem našel, ale asi by to šlo udělat lépe.
SELECT * FROM tabulka WHERE LOWER(Prijmeni) LIKE 'nová%'
suvel
Profil
Keeehi:
Stydím se, že mně to nenapadlo ;-(
Jinak s diakritikou není problém, na to už je na webu spousta řešení, nebo to jde třeba v php funkcí StrTr. Ale stejně by mně zajímalo, jak je to u REGEXP s tím identifikátorem "i", o kterém se letmo zmiňuje každý manuál....
nightfish
Profil
suvel:
Ale stejně by mně zajímalo, jak je to u REGEXP s tím identifikátorem "i", o kterém se letmo zmiňuje každý manuál....
můžeš zmínit nějaký manuál mySQL, který se zmiňuje o modifikátoru "i"?
suvel
Profil
nightfish:
Namátkou třeba tady:
http://interval.cz/clanky/regularni-vyrazy-a-javascript-metody-search-a-replace/
http://www.regularnivyrazy.info/shrnuti-syntaxe.html
nightfish
Profil
suvel:
Namátkou třeba tady:
když se pozorně podíváš na [#8], zmiňoval jsem manuál mySQL (protože o tom se tady celou dobu bavíme)
ani jeden z uvedených článků mySQL nezmiňuje
naopak v [#5] zmiňuje fajzen oficiální dokumentaci mySQL, ve které se píše již dříve uvedené - že regulární výrazy v mySQL jsou case insensitive

na stejné stránce se vyskytuje i
The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets. In addition, these operators compare characters by their byte values and accented characters may not compare as equal even if a given collation treats them as equal.
Operátory REGEXP a RLINK pracují s jednotlivými bajty, čiliže nejsou bezpečné z hlediska vícebajtových kódování a mohou s vícebajtovými kódováními přinést neočekávané výsledky. Navíc tyto operátory porovnávají znaky podle hodnot jednotlivých bajtů, a tedy znaky s diakritikou nemusí být rozpoznány jako shodné, i když podle použitého porovnávání (collation) shodné jsou.

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:

0