Autor Zpráva
sedgar
Profil *
Dobry den,
pomocou LIKE vyhladavam retazec, potreboval by som aby nerozlisoval male/velke pismena, mne ich vsak rozlisuje! neviem preco, podla referencneho manualu by ich rozlisovat nemal:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.htm l

pise sa tam, ze LIKE nerozlisuje male/velke pokial nieje ani jedna cast porovnavania BINARY STRING... tomu docela nerozumiem...

Moj pripad:
Datovy typ stlpcov v ktorych hladam je VARCHAR,
Z formulara vytvoreneho v php nacitam pomocou _GET hladany retazec do premennej, retazec upravim - zan a pred neho dam percento, premennu nacitavam v SQL dotaze - dotaz je tvoreny v php.

nacitanie premennej s retazcom:
if (isset($_GET['htext']))
{
$htext = $_GET['htext'];
$htext = "%$htext%";
}

SQL dotaz:
$dotaz1 = mysql_query("SELECT os_meno, os_priezvisko, ut_kod FROM osoby os, utvary ut WHERE os.ut_id = ut.ut_id AND (os.os_meno LIKE '$htext' OR os.os_priezvisko LIKE '$htext') ORDER BY os_priezvisko") or die ("2chybny SQL dotaz: ". mysql_errno().":".mysql_error()."<br>");

Dakujem.
Kajman_
Profil *
Záleží na zvoleném porovnání (collation) u sloupečku. Zvolte nějaké končící na _ci.
sedgar
Profil *
porovnavanie mam:

cp1250_czech_cs

tak to nejde asi preto... ktore mi doporucite nastavit, aby sa mi nedomiesali fonty?
kajaman
Profil
Myslím, že porovnávání nemá co dělat s fonty, narozdíl od znakové sady.
K.
sedgar
Profil *
presne detaily ohladom porovnavania a znakovych sad nepoznam, mal by som otazocku...
ked si v phpmyadmin kliknem na polozku porovnavanie, urcujem hned dve nastavenia?
- znakovu sadu: ascii, big, binary, cp1250,.... tie su zvyrazene tucnym italicom
- porovnavanie: kazda sada obsahuje niekolko sposobov porovnavania... napr cp1250 obsahuje cp1250_bin, cp1250_croatian_ci, cp1250_czech_cs, cp1250_general_ci

preco ma kazda sada este rozne druhy porovnavani? preco proste nieje cp1250?

dik za vysvetlenie.
es
Profil *
Porovnávanie určuje ako sú znaky v znakovej sade zoradené. Napr. 'B' > 'A'.
Porovnávania na konci s _cs majú 'a' > 'A'.
Porovnávania na konci s _ci majú 'a' = 'A'.
TSD
Profil *
Nevím jestli ještě hledáš řešení, nebo už pátráš po příčinách, abys to mohl řešit nějak systémově.

Já jsem to řešil takhle:
.. where ( LCASE(nazev) LIKE LCASE(\"%".$strWhat."%\")) ..
sedgar
Profil *
Dakujem za rady,
vyhladavanie uz nieje casesensitive, takze funguje tak ako som chcel, takze je tema pre mna uzavreta... poslednu otazku som polozil kvoli tomu, aby som pochopil co v mysql nastavujem - nie vsetko mi je jasne - a nezomrel hlupy ;-D
es
Profil *
TSD
Já jsem to řešil takhle:
.. where ( LCASE(nazev) LIKE LCASE(\"%".$strWhat."%\")) ..

No vrátenie výsledkov tohoto dotazu trvá dlhší čas.
TSD
Profil *
es
Ano. V mém případě, kdy vyhledávání je použito asi 5x za den, mě to netrápí.
Kajman_
Profil *
preco ma kazda sada este rozne druhy porovnavani? preco proste nieje cp1250?

Protože v češtině je např ch>h, ale v jiných jazycích ch není, tak ch<h. Takovýchto výjimek má spousta jazyků, proto je spousta porovnání.

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