Portál AbcLinuxu, 12. května 2025 16:39

Dotaz: Kódovanie pre korektný SELECT výrazu s diakritikou - MySQL

6.1.2010 16:01 mano | skóre: 9
Kódovanie pre korektný SELECT výrazu s diakritikou - MySQL
Přečteno: 622×
Odpovědět | Admin
Dobrý deň, mám problém pri výbere z MySQL databáze pri výrazoch uložených s diakritikou a interpunkčnými znamienkami. Pri SELECTe potrebujem použiť výraz bez diakritiky a potrebujem vybrať Výraz s diakritikou, teda napr. pre výber 'čšťžáíé' potrebujem použiť výraz

SELECT * FROM `table` WHERE `field` LIKE 'cstzaie'

pri áéí funguje v poriadku utf-8 a cp1250 no latin2 nie a pri čšťž už nefunguje ani jedno. Vie mi niekto poradiť ako nastaviť kódovanie tabuliek (prípadne nejaký iný systém priamo v databázi) alebo to musím riešiť "ručne" pomocou PHP kódu?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.1.2010 17:57 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: Kódovanie pre korektný SELECT výrazu s diakritikou - MySQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
pri čšťž už nefunguje ani jedno ... Což je bohužel správně. Viz norma lexikálního srovnání.
6.1.2010 19:27 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Kódovanie pre korektný SELECT výrazu s diakritikou - MySQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
MySQL 5:
Sloupec označit utf8_unicode_ci, případně ucs2_unicode_ci
Případně:
SELECT * FROM `table` WHERE 'cstzaie' COLLATE utf8_unicode_ci = `field`
NEBO
SELECT * FROM `table` WHERE 'cstzaie' COLLATE utf8_unicode_ci LIKE `field`

Podle toho jak se hledá či řadí častěji - podle toho nastavit standardní např utf8_czech_ci, případně ucs2_czech_ci.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
6.1.2010 21:43 lacik
Rozbalit Rozbalit vše Re: Kódovanie pre korektný SELECT výrazu s diakritikou - MySQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud chcete řešit vyhledávání přes php, pak zřejmě pomocí php vkládáte i záznamy do db. V tom případě je nejjednodušší vytvořit pole třeba 'x-field' a do něj pomocí php vložit obsah pole 'field' bez diakritiky a převedený na malá (nebo velká) písmena, a pak je

SELECT * FROM `table` WHERE `x-field` LIKE 'cstzaie'

Toto bude IMHO nejjednodušší a pro MySQL i nejrychlejší.

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.