Portál AbcLinuxu, 23. dubna 2024 20:11


Dotaz: INSERT a cestina

19.9.2014 13:11 Jiri
INSERT a cestina
Přečteno: 422×
Odpovědět | Admin
Mam tabulku se sloupcem text (VARCVHAR), která mám mít UNIQUE hodnoty. Collation tabulky mam nastaveno na utf8_czech_ci. Po zavolání druhého níže napsaného příkazu se mi vypíše chyba, že "café" není unikátní. Jaké mám možnosti, aby databáze rozlišovala mezi těmito slovy. Díky.

INSERT INTO tabulka(text) VALUES('cafe');
INSERT INTO tabulka(text) VALUES('café');
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.9.2014 18:24 Filip Jirsák
Rozbalit Rozbalit vše Re: INSERT a cestina
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkusil bych pro ten sloupeček použít collation utf8_general_ci. Předpokládám, že se jedná o MySQL...
19.9.2014 22:24 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: INSERT a cestina
Jestli se nepletu tak jedině utf8_bin, a pokud je třeba české řazení, tak jsou dvě hloupé možnosti: buď utf8_czech_ci specifikovat v dotazu, ale to se nepoužije index (pokud jsou select-y jen pár záznamů - nevadí), nebo vytvořit dva sloupce (ze stejným obsahem), druhý s utf8_czech_ci na, který dát (neunikátní) index a řadit dle něj (protože prostě nelze vytvořit index s definovaným collate).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Josef Kufner avatar 21.9.2014 01:05 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: INSERT a cestina
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to tak správně, ve zdejších krajích je to prostě obojí kafe.
Hello world ! Segmentation fault (core dumped)
21.9.2014 12:37 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: INSERT a cestina
Jako vtip dobré ;)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.9.2014 01:47 Sten
Rozbalit Rozbalit vše Re: INSERT a cestina
Odpovědět | | Sbalit | Link | Blokovat | Admin
Čeština při řazení nerozlišuje „e“ a „é“. Protože je nerozlišuje, tak jsou pro porovnání stejná písmena. A proto nejsou unikátní. Otázka je, proč by to mělo být unikátní?
21.9.2014 12:45 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: INSERT a cestina
Jedna věc je řazení a druhá věc unikátnost a ty dvě věci souvisí jen okrajově, čeština rozlišuje slova bez diakritiky a s diakritikou, často mají úplně jiný význam, tedy jsou unikátní.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.9.2014 23:17 Filip Jirsák
Rozbalit Rozbalit vše Re: INSERT a cestina
To není tak docela pravda. České řazení je dvou- nebo tříkrokové. V prvním kroku se opravdu diakritika u většiny písmen ignorují, ale pokud v prvním kroku vyjdou dvě slova jako "stejná" v druhém kroku se porovnávají i s ohledem na diakritika - je určené pořadí, jak jdou diakritická znaménka za sebou. Ve třetím kroku se pak řadilo ještě podle velikosti písmen, to už dnes prý není povinné - prý kvůli počítačům. Což mi připadá jako nesmysl, pro počítače je naopak lepší, pokud je řazení jednoznačné. Takže mi není moc jasné, proč ta slova MySQL považuje za identická, protože v českém abecedním řazení ta slova jednoznačně mají být seřazena "cafe" < "café".

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.