Az a problémám, hogy ha like '%o%' -t keresek mysqlben a találatokhoz behozza a 'ő, ö, ó' -t is.
Valaki találkozott már hasonló problémával?
- 3399 megtekintés
Hozzászólások
megfelelo charset + lower + binary?
t
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez természetes.
Ahhoz, hogy csak Ő vagy csak o találatod legyen a táblának binárisnak kell lennie.
pch
--
http://www.buster.hu
--
- A hozzászóláshoz be kell jelentkezni
Ez természetes...
...mysql-n.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Látszik, hogy nem értesz hozzá, csak úgy fikázol orrbaszájba mindenhol.
hungarian collation visszaadja az ékezetes változatokat is, a csak bináris fog bináris hasonlítást végezni.
Tudom, ez neked új, de a Unicode pont erre lett kitalálva...
- A hozzászóláshoz be kell jelentkezni
google://collate
Nem feltetlenul kell a tablanak binarisnak lennie, eleg, ha a collate az.. persze ha a tabla binaris, akkor a default collate is az lesz.
Ha vegyesen akarod hasznalni (lekerdezesenkent mas), akkor jobban jarsz, ha a query vegen megadod. Amugy beallithatod a tablara/mezore vonatkozoan is.
szerk: csak hogy ne kelljen keresned:
http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
--
"Digital content is not a tangible good and should not be subject to the same liability rules as toasters." - Francisco Mingorance, BSA
- A hozzászóláshoz be kell jelentkezni
Nekem olyan bajom van, hogy van egy MySql táblám, amiben ilyenek vannak:
1,2,3,7,8,12,11,22,23,26,24,29,25,33
és van egy lekérdezésem így: w_cat LIKE '%1%' AND w_cat LIKE '%3%'
Na most az a bajom, hogy nekem csak az az adott érték kellene, ami a pontos érték, nem pedig a 12, 22 ott, ahol csak a 2 kellene, stb. Remélem, érthető, már napok óta alig aludtam - lehet ezért sem látom a megoldást, lenne valakinek ötlete, mivel pontosíthatom a keresést?
- A hozzászóláshoz be kell jelentkezni
',' || mező || ',' like '%,1,%'
- A hozzászóláshoz be kell jelentkezni
a w_cat valami karakter tipusú, nem?
w_cat LIKE '%,1,%' AND w_cat LIKE '%,3,%'
vagy nem értem a kérdést :)
- A hozzászóláshoz be kell jelentkezni
Kérdezésekkel ilyenkor már bajban vagyok még magam felé is :)
Igen, a w_cat egy karakter típus, alább a full kód.
Érték $id így jön be a php-ból:
1_3_22_34_
$KeresErt = explode('_', $id);
$KeresErtTomb = array();
foreach ($KeresErt as $miatosz) {
$miatosz = trim($miatosz);
if (!empty($miatosz)) {
$KeresErtTomb[] = "w_cat LIKE '%$miatosz%'"; // ez legyen a '%,$miatosz,%' ? de a táblában nem vesszővel kezdődneka számok :S
}
}
$keres=implode(' AND ', $KeresErtTomb);
$query = "SELECT * FROM " . $sql_prefix . "_products WHERE ".$keres." order by p_name asc";
- A hozzászóláshoz be kell jelentkezni
> a táblában nem vesszővel kezdődneka számok
jogos és nem is azzal végződnek :S akkor nagyon szakszerűtlenül
w_cat LIKE '$miatosz,%' or w_cat LIKE '%,$miatosz,%' OR w_cat LIKE '%,$miatosz'
amíg nem jön valaki aki nem csak hobbiból programozgat és mondja meg a tutit
- A hozzászóláshoz be kell jelentkezni
w_cat REGEXP '(^1$)|(^1,)|(,1,)|(,1$)'
asszem :-)
- A hozzászóláshoz be kell jelentkezni
valóban, a REGEXP pont ilyenekre való :)
- A hozzászóláshoz be kell jelentkezni
REGEXP [[:<:]]".$miatosz."[[:>:]] - köszi :)
Majdnem :( Van amikor visszaadja a keresést, más feltételnél meg hiányos a lista.. megőrülök
- A hozzászóláshoz be kell jelentkezni
Most nemértek valamit.
Ha pontos érték kell miért like?
Ha meg like akkor miért jokerezel?
Szal valami nem kerek.
Ha 1 és 3 közötti kell akkor meg between. (select * from táblám where w_cat between '1' and '3')
pch
--
http://www.buster.hu "A" számlázó
--
- A hozzászóláshoz be kell jelentkezni
A sorozatból kell egy-egy érték, ami viszont meg kel egyezzen a bejövő adatból kapott értékkel. A between azért nem jó, mert nem egy tartomány kell, hanem a sorozatból egy-egy pontos érték. Lehet a megközelítés rossz, de akkor ha valakinek van ötlete, örömmel fogadnám.
- A hozzászóláshoz be kell jelentkezni
w_cat=$miatosz
- A hozzászóláshoz be kell jelentkezni
yep
Ezért írtam, hogy nemértem minek a like.
pch
--
http://www.buster.hu "A" számlázó
--
- A hozzászóláshoz be kell jelentkezni
Nekem ugy tunik, hogy a kerdezo egy TOMBOT tesz bele az adott mezobe, es ebben probal utana like-al adott ertekre keresni. Ahelyett, hogy tenylegesen tomb tipusu lenne az adott oszlop (pl. postgres tud ilyet, mysql fejlodeset mar par eve nem kovetem), vagy hogy tisztesseges modon letrehozna egy uj tablat, amit meg indexelni is tud, es nem nezne vegig minden lekerdezeskor minden sort.
Most viszont a szeparatorral is like-okkal sziv, mert a jelenlegi tombemulacioja ezt teszi lehetove.
--
hungarian up portal - sj
- A hozzászóláshoz be kell jelentkezni
most akkor mi van? mi a feladat?
- A hozzászóláshoz be kell jelentkezni
Ja, hogy egy lehetseges megoldast is irjak - ami persze rosszabb, mint az array:
w_cat LIKE '%1%' AND w_cat LIKE '%3%'
helyett:
(w_cat LIKE '%,1,%' or w_cat LIKE '1,%' or w_cat LIKE '%,1') AND
(w_cat LIKE '%,3,%' or w_cat LIKE '3,%' or w_cat LIKE '%,3')
Ha a tomb elejere es a vegere is tennel szeparatort, pl:
,1,2,3,7,8,12,11,22,23,26,24,29,25,33,
Akkor egyszerubb lenne:
w_cat LIKE '%,1,%' AND w_cat LIKE '%,3,%'
(vagy ha a mysql gyorsan tud oszlophoz fuzni, lehet on-thy-fly is)
Egyebkent ez a like-os megoldas (vagy ugy kb. barmelyik ami like-ot hasznal tombokhoz) nagyon hamar nagyon lassuva fog valni ha megtomod adatokkal.
--
hungarian up portal - sj
- A hozzászóláshoz be kell jelentkezni
tudomásom szerint a regexp és a like feldolgozása pont ugyanúgy történik legbelül, csak az parancssor néz ki szebben
- A hozzászóláshoz be kell jelentkezni
ez nem kezeli az esetet ha csak '1' a w_cat tartalma
- A hozzászóláshoz be kell jelentkezni
Valoban nem kezeli, kioptimalizaltam. Ugyanis akkor az AND masik aga nyilvan nem teljesulhet.
--
hungarian up portal - sj
- A hozzászóláshoz be kell jelentkezni
ha ertem a kerdest...
regexp '(^|,)valtozo(,|$)'
-szobi.
- A hozzászóláshoz be kell jelentkezni
szerintem érted :)
- A hozzászóláshoz be kell jelentkezni