Autor Zpráva
JoK1955
Profil *
Zdravím všechny. Snažím se vybírat z tabulky podle pole autor... chtěl bych vybrat jen záznamy, které mají dvě slova, první velká i malá, druhé jen velká. Zápasím s češtinou, ale to jsem nějak uklohnil. Ve výpisu se však objevují i záznamy s druhým slovem malými písmeny. Můžete někdo poradit, pls? JoK
Můj select a reg. výraz
    $rv = "'^[a-zěščřžýáíéúůA-ZZŠÁĚČŘŽÝÍÉŮ]+ [A-ZŠÁĚČŘŽÝÍÉŮŇ]+$'";
    $sql = "SELECT autor FROM n_foto WHERE autor REGEXP $rv GROUP BY autor ORDER BY autor";
Kcko
Profil
JoK1955:
Malá nápověda: http://www.regular-expressions.info/mysql.html
Konkrétně The REGEXP operator applies regular expressions case insensitively if the collation of the table is case insensitive, which is the default. If you change the collation to be case sensitive, the REGEXP operator becomes case sensitive.
JoK1955
Profil *
Kcko:
Díky za odkaz. Koukal jsem na to, ale vzhledem k mé spíše neznalosti jak regvýrazů tak angličtiny z toho nejsem moc moudrý. Nemohl bys mi krátce říci kde je problém? JoK
Joker
Profil
JoK1955:
Píše se tam, že regulární výrazy se chovají stejně jako porovnávací kódování (collation). Pokud tedy máte case-insensitive porovnávací kódování (což je výchozí volba), tak ani REGEXP nehledí na velikost písmen.

Možná ještě doplnění, pozná se to podle posledních dvou písmen u toho kódování, ci = case insensitive a cs = case sensitive (ještě je bin, ale to nás nezajímá).
Např.: utf8_czech_ci nerozlišuje velikost písmen, zatímco utf8_czech_cs ano.
JoK1955
Profil *
Joker:
Sqělá odpověď! Rozumím tomu a jsem zase o hodně chytřejší :-) Nastavil jsem u pole autor porovnávání latin2_czech_cs (utf8_czech_cs není v nabídce - používám Adminer) a "malá" příjmení nejsou :-) Nemaje dostatečného vzdělání v tomto směru jsem si vždycky myslel, že _cs nějak souvisí se czech :-(
Znamená to, že je lepší mít nastaveno porovnávání na _cs? Původně jsem měl utf8_czech_ci. Díky JoK
Joker
Profil
JoK1955:
Znamená to, že je lepší mít nastaveno porovnávání na _cs?
To právě záleží na tom, jestli chcete nebo nechcete rozlišovat velikost písmen.
JoK1955
Profil *
Joker:
Teď se jednalo o jednorázovou úpravu staré databáze, ale díky za námět na další vzdělávání :-) JoK

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