Autor | Zpráva | ||
---|---|---|---|
sedgar Profil * |
#1 · Zasláno: 14. 4. 2008, 10:30:49
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 * |
#2 · Zasláno: 14. 4. 2008, 10:36:03
Záleží na zvoleném porovnání (collation) u sloupečku. Zvolte nějaké končící na _ci.
|
||
sedgar Profil * |
#3 · Zasláno: 14. 4. 2008, 11:00:53
porovnavanie mam:
cp1250_czech_cs tak to nejde asi preto... ktore mi doporucite nastavit, aby sa mi nedomiesali fonty? |
||
kajaman Profil |
#4 · Zasláno: 14. 4. 2008, 15:49:50
Myslím, že porovnávání nemá co dělat s fonty, narozdíl od znakové sady.
K. |
||
sedgar Profil * |
#5 · Zasláno: 15. 4. 2008, 09:17:19
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 * |
#6 · Zasláno: 15. 4. 2008, 09:46:25
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 * |
#7 · Zasláno: 15. 4. 2008, 09:48:09
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 * |
#8 · Zasláno: 15. 4. 2008, 09:58:00
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 * |
#9 · Zasláno: 15. 4. 2008, 10:01:07
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 * |
#10 · Zasláno: 15. 4. 2008, 10:07:30
es
Ano. V mém případě, kdy vyhledávání je použito asi 5x za den, mě to netrápí. |
||
Kajman_ Profil * |
#11 · Zasláno: 15. 4. 2008, 10:53:42
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í. |
||
Časová prodleva: 16 let
|
0