Autor Zpráva
Fury
Profil *
Ahoj,

řeším na webu jeden problém. Mám v databázi následující záznamy:
Vyškov
Výškov

A ve chvíli, kdy provedu dotaz do databáze:
SELECT id,nazev FROM `tabulka` WHERE `nazev` LIKE 'Vyškov'

Vrátí se mi oba záznamy výše. Dá se nějak docílit toho, aby ve vyhledávání byla zohledněna diakritika? Tzn. při vyhledávání 'Vyškov'se mi vrátil pouze řádek Vyškov, nikoliv Výškov? Kódování mám v utf8_general_ci.

Zároveň dodatečný dotaz, dá se zohlednit ve vyhledávání velikost písmen?

Děkuji za ponoc.
juriad
Profil
O tom, které znaky jsou shodné rozhoduje collation (utf8_general_ci); pokud chceš přesnou shodu použij utf8_bin.
Fury
Profil *
juriad:
Díky, ale jde mi o obě situace, chci abych v jednom dotazu do databáze mohl hledat přesnou shodu, tzn. včetně diakritiky, tak následně v jiném dotazu aby to nezohledňovalo diakritiku. Což když ve chvíli, kdy změním kódování na utf8_bin, tak nejsem schopen docílit obou způsobů.

Jde tohoto nějak docílit?

Díky!
juriad
Profil
Můžeš si v dotazu poručit collation: dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html#operator_like, ale v takovém případě asi nebude možné použít index a dotaz bude pomalý. Pokud by to byl problém, ulož data do druhého sloupce s jiným collation a používej ty sloupce podle potřeby.

Také: dev.mysql.com/doc/refman/5.7/en/charset-collate.html

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: