Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Vyhledávání v MySQL funguje jen s velkými písmeny

Ahoj,
prosím o radu. Mám databázi, ve které mám uložené nějaké produkty (výrobky) včetně jejich názvu. Na webu mám potom vyhledávací políčko, kde po zadání slova vyhledá všechny odpovídající záznamy.
Ted se mi však stalo, že když zadám např. slovo plášť, nevrátí žádný výsledek. KDyž však zadám PLÁŠŤ, vrátí hned 9výsledků.
Názvy výrobků jsou v databázi uloženy malými písmeny. Při vyhledávání se nerozlišuje case-sensitive.
Jak je možné, že když zadám malá písmena nenajde nic a u velkých jo??
Díky za rady, jak to opravit.
24. 4. 2013 20:55:12
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894676
martvin
verified
rating uzivatele
24. 4. 2013 21:03:55
a urcite mas tabulku v databazi "_ci" ? jestli ano to skus proste vsechno protahnout prez strtolower()
24. 4. 2013 21:03:55
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894675
tak změna, koukl jsem do databáze a je tam teda vše uloženo velkým písmem, ti to vše vysvětluje. Jak ale udělat aby bylo vyhledáávní non case sensitive??
24. 4. 2013 21:06:12
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894674
martvin
verified
rating uzivatele
24. 4. 2013 21:17:45
mozna ze to srovnavas nekde v php,a tam jsou uz velke male pismena. Skus si vyhledat neco primo v phpmyadmin, aspon budes vedet jestli to databaze spatne odpovida nebo jestli musis hledat jinde
24. 4. 2013 21:17:45
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894673
v phpmyadmin to dělá úplně to stejné, tzn. nevyhledává
24. 4. 2013 21:23:27
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894672
Bacon
verified
rating uzivatele
(2 hodnocení)
24. 4. 2013 21:29:08
Jsou databáze, tabulky a sloupce v collation utf8_neco_ci? Stejně tak připojení k databázi v PHP?
24. 4. 2013 21:29:08
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894671
Nejsou, jsou v cs-utf-8, hosting nic jiného nenabízí :-(
24. 4. 2013 21:30:37
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894670
martvin
verified
rating uzivatele
24. 4. 2013 21:31:25
no to jedine co mne napada to je to , ze mas tabulku udalanou jako napriklad latin2_czech_cs , nebo neco_neco_bin - jen v takovem pripade se rozlisuji velke pismena. Kazdopadne v mysql
---
hosting nabizi jen jeden cs_utf - to snad neni mozne?
--
a mozna ze mas proste utf8_bin, to je snad jedina moznost aby ti to takhle se chovalo, a tvuj hosting ma to prejmenovany podle sebe. Jinak vsechny utf8 jsou _ci (case insensitive) - mozna ze ty pismenka cs_utf8 znamenaji case sensitive?
24. 4. 2013 21:31:25
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894669
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
25. 4. 2013 00:00:50
SELECT * FROM table1 WHERE strtolower(col1) = strtolower('XXXX');
SELECT * FROM table1 WHERE strtolower(col1) LIKE strtolower('%XXXX%');
takhle?
EDIT: za rychlost neručím ;o)
25. 4. 2013 00:00:50
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894668
martinzsa
verified
rating uzivatele
(1 hodnocení)
25. 4. 2013 11:55:46
Naco volat 2x strtolower ked mozes volat 1x strtoupper:
Napsal Bedříšek;941699
SELECT * FROM table1 WHERE strtolower(col1) = strtolower('XXXX');
SELECT * FROM table1 WHERE strtolower(col1) LIKE strtolower('%XXXX%');
takhle?
EDIT: za rychlost neručím ;o)
25. 4. 2013 11:55:46
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894667
Milan Šťovíček
verified
rating uzivatele
25. 4. 2013 12:04:51
Napsal Bedříšek;941699
SELECT * FROM table1 WHERE strtolower(col1) = strtolower('XXXX');
SELECT * FROM table1 WHERE strtolower(col1) LIKE strtolower('%XXXX%');
takhle?
EDIT: za rychlost neručím ;o)
Mysql pouziva funkci UPPER() (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_upper)
Napsal martinzsa;941827
Naco volat 2x strtolower ked mozes volat 1x strtoupper:
Pokud neni jistota, ze je vse velkymi pismeny, je potreba volat upper na hledanem sloupci i na hledanych datech. Tvuj priklad neni case insensitive, jak pozadoval neattom.
Podle me tedy takhle:
pripadne LOWER() (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lower)
25. 4. 2013 12:04:51
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894666
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
25. 4. 2013 14:53:23
Napsal martinzsa;941827
Naco volat 2x strtolower ked mozes volat 1x strtoupper:
protože když nezměníš i sloupec, tak neproběhne ==
---------- Příspěvek doplněn 25.04.2013 v 14:55 ----------
Napsal stovicek.milan;941834
Mysql pouziva funkci UPPER() (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_upper)
Pokud neni jistota, ze je vse velkymi pismeny, je potreba volat upper na hledanem sloupci i na hledanych datech. Tvuj priklad neni case insensitive, jak pozadoval neattom.
Podle me tedy takhle:
pripadne LOWER() (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lower)
tak tak. lower() jsem si nevšiml. opsal jsem automaticky strtolower
25. 4. 2013 14:53:23
https://webtrh.cz/diskuse/vyhledavani-v-mysql-funguje-jen-s-velkymi-pismeny/#reply894665
Pro odpověď se přihlašte.
Přihlásit