Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ignore karakteri u pretrazi

[es] :: MySQL :: Ignore karakteri u pretrazi

[ Pregleda: 1737 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivan Golubović
AV market
Požarevac

Član broj: 3154
Poruke: 586
*.dynamic.sbb.rs.

Sajt: www.AVmarket.rs


+7 Profil

icon Ignore karakteri u pretrazi02.01.2012. u 11:10 - pre 149 meseci
Pitanje je jednostavno, dok verujem da odgovor i nije toliko...

Potrebno mi je da ignorišem neke karaktere, koji su možda uneti u bazu, prilikom pretrage kao npr. razmak, tačke, crtice...

Kako da napravim SELECT upit koji pretražuje POLJE1 za string npr. 32pfl540312 i za rezultat nalazi 32 PFL-5403/12?
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Ignore karakteri u pretrazi02.01.2012. u 19:34 - pre 149 meseci
Za case moze da resis tako sto kaze da je collation case insensitive. Za takav search, mozda nesto kao SELECT * FROM TABLE WHERE POLJE1 LIKE "32%pfl%5403%12" ?
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Ignore karakteri u pretrazi02.01.2012. u 21:56 - pre 149 meseci
auuuuuuuu ...

jedino sto mozes da probas je soundex:

Code:

mysql> select soundex('32pfl540312'), soundex('32 PFL-5403/12');
+------------------------+---------------------------+
| soundex('32pfl540312') | soundex('32 PFL-5403/12') |
+------------------------+---------------------------+
| P400                   | P400                      |
+------------------------+---------------------------+
1 row in set (0.00 sec)



 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Ignore karakteri u pretrazi02.01.2012. u 22:25 - pre 149 meseci
To se, nagadjam (nikad probao soundex) indexira isto kao LIKE '%NESTO%' na text polju? :)

A da probas neki full text search softver van mysql-a?
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Ivan Golubović
AV market
Požarevac

Član broj: 3154
Poruke: 586
*.dynamic.sbb.rs.

Sajt: www.AVmarket.rs


+7 Profil

icon Re: Ignore karakteri u pretrazi02.01.2012. u 22:50 - pre 149 meseci
Pronašao sam rešenje... Dok ne nađemo bolje, duplirao sam kolonu nad kojim treba da se vrši pretraživanje, korišćenjem funkcije(PHP)
Code:
function text_index($text)
{
    $trazi = array(""", "&", "<", ">", " ", "@");
    $html_free = str_replace($trazi, "", $text);
    $trazi = array(" ", "/", "\\", "'", "\"", "-", "_", "&", ",", ";", ":", ".", "&");
    $rezultat = str_replace($trazi, "", $html_free);
    return $rezultat;
}
Sam sam je pisao i ubacivao promenljive. Meni završava posao, možda će još nekome...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Ignore karakteri u pretrazi03.01.2012. u 04:41 - pre 149 meseci
Citat:
nkrgovic: To se, nagadjam (nikad probao soundex) indexira isto kao LIKE '%NESTO%' na text polju? :)


soundex je funkcija kao svaka druga, rezultati funkcija se ne indexiraju (ne mozes unapred da znas rezultat funkcije). Ono sto mozes je da cuvas vrednost soundex-a u istoj tabeli pa da radis select ... where tabela.soundexvrednost = soundex('stavectrazis') ... to prilicno dobro radi posebno kod takvih zahteva kao sto je op napisao, posebno zato sto ce ti vratiti i "slicne" stringove :) .. probaj, to je mnogo dobra funkcija za tekst pretragu
 
Odgovor na temu

Ivan Golubović
AV market
Požarevac

Član broj: 3154
Poruke: 586
*.dynamic.sbb.rs.

Sajt: www.AVmarket.rs


+7 Profil

icon Re: Ignore karakteri u pretrazi03.01.2012. u 10:29 - pre 149 meseci
Nemam poverenja u soundex, jer ne daje tačne već približne rezultate. U mom slučaju je izuzetno bitna preciznost... Mislim da dupliranje kolone nije problem i da je najbrže rešenje...
Code:
$sql = "SELECT polje FROM tabela WHERE polje_bez_znakova LIKE '".text_index($string)."';
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Ignore karakteri u pretrazi03.01.2012. u 13:54 - pre 149 meseci
zasto LIKE ?!
 
Odgovor na temu

Ivan Golubović
AV market
Požarevac

Član broj: 3154
Poruke: 586
*.rs
Via: [es] mailing liste

Sajt: www.AVmarket.rs


+7 Profil

icon Re: Ignore karakteri u pretrazi03.01.2012. u 14:53 - pre 149 meseci
> Kod mene ima %...%, ali sam ovde po automatizmu napisao bez...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Ignore karakteri u pretrazi03.01.2012. u 16:09 - pre 149 meseci
ako vec pravis dodatnu kolonu, onda ocistis trailing i leading spaces i radis =. Jasno ti je da LIKE ne koristi nijedan index i da svaki upit radi full table scan.
 
Odgovor na temu

[es] :: MySQL :: Ignore karakteri u pretrazi

[ Pregleda: 1737 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.