[mysql] Jak =?ISO-8859-2?Q?napisa=E6_wzorzec=3F?=
Xorock - 10-06-2006 00:03
[mysql] Jak =?ISO-8859-2?Q?napisa=E6_wzorzec=3F?=
Mam wartości pól: 'ala ma kota' 'kota ma ala'
i szukam teraz wystąpienia słów 'ala' oraz 'kota' w jednym rekordzie. Jak odpytać bazę aby to otrzymać? Mogę dać where x like '%ala%' and x like '%kota%' ale może jest jakiś prostszy i bardziej uniwersalny sposób?
Xorock - 10-06-2006 00:03
I jeszcze jedno pytanie. Jak zrobić 'back reference' w regexpach?
Xorock - 10-06-2006 00:03
Ok. Na to sobie odpowiedziałem: regexp '((ala|kota)[+ ]?){x}' gdzie x to ilość wystąpień słów, w tym wypadku 2. Jeżeli ktoś jeszcze zna odpowiedź na drugie pytanie będę wdzięczny.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 10-06-2006 00:03
Xorock wrote: > Ok. Na to sobie odpowiedziałem: regexp '((ala|kota)[+ ]?){x}' > gdzie x to ilość wystąpień słów, w tym wypadku 2. > Jeżeli ktoś jeszcze zna odpowiedź na drugie pytanie będę wdzięczny.
Ale ten regexp dopasuje Ci dwie ale bez kota.... Pierwsza metoda jest najlepsza. Chyba, że zdecydujesz się uzywać full text search.
-- P.M.
Xorock - 10-06-2006 00:03
Paweł Matejski napisał(a): > Xorock wrote: >> Ok. Na to sobie odpowiedziałem: regexp '((ala|kota)[+ ]?){x}' >> gdzie x to ilość wystąpień słów, w tym wypadku 2. >> Jeżeli ktoś jeszcze zna odpowiedź na drugie pytanie będę wdzięczny. > > Ale ten regexp dopasuje Ci dwie ale bez kota.... Tak, wiem. Ponieważ nie będzie tam powtórzeń nie jest to problemem. > Pierwsza metoda jest najlepsza. Chyba, że zdecydujesz się uzywać full > text search. Innodb więc odpada. Poza tym sprawdziłem jak się sprawuje ftext i nie wypada najlepiej. No i potrzebuje od 4 znaków aby coś w ogóle odszukać.
Przemyslaw Popielarski - 10-06-2006 00:03
Xorock wrote: > Poza tym sprawdziłem jak się sprawuje ftext i nie wypada najlepiej.
Bo?
> No i potrzebuje od 4 znaków aby coś w ogóle odszukać.
Przeciez to mozna banalnie latwo zmienic.
-- ../ premax ../ premax@hot.pl ../ koniec i bomba, a kto czytal ten traba. w.g.
Xorock - 10-06-2006 00:03
Przemyslaw Popielarski napisał(a): > Bo? Minimum to 4 znaki.
> > Przeciez to mozna banalnie latwo zmienic. Banalnie łatwo? Przecież jest wymagana rekonfiguracja serwera i jego restart. Ani jednego, ani drugiego zrobić nie mogę.
Poza tym jak już mówiłem na innodb nie ma full text search więc musiałbym przepisywać co jakiś czas dane do tabeli myisam a to mi się średnio uśmiecha.
Przemyslaw Popielarski - 10-06-2006 00:03
Xorock wrote: >> Przeciez to mozna banalnie latwo zmienic. > Banalnie łatwo? Przecież jest wymagana rekonfiguracja serwera i jego > restart. Ani jednego, ani drugiego zrobić nie mogę.
Zmiana konfiga i restart to akurat pikus -- bo to trwa 3 do 5 sekund. Natomiast trzeba zrobic rebuild indeksow, a to juz trwa dluzej. Co nie znaczy, ze nie jest to do zrobienia. Trzeba bylo sobie nie uruchamiac niedokonfigurowanej maszyny.
-- ../ premax ../ premax@hot.pl ../ koniec i bomba, a kto czytal ten traba. w.g.
Xorock - 10-06-2006 00:03
Przemyslaw Popielarski napisał(a): > Zmiana konfiga i restart to akurat pikus -- bo to trwa 3 do 5 sekund. > Natomiast trzeba zrobic rebuild indeksow, a to juz trwa dluzej. Co nie > znaczy, ze nie jest to do zrobienia. Trzeba bylo sobie nie uruchamiac > niedokonfigurowanej maszyny. > Hosting współdzielony ;) Biorę co dają.
keczerad - 10-06-2006 00:03
Xorock napisał(a): > Mam wartości pól: > 'ala ma kota' > 'kota ma ala' > > i szukam teraz wystąpienia słów 'ala' oraz 'kota' w jednym rekordzie. > Jak odpytać bazę aby to otrzymać? > Mogę dać where x like '%ala%' and x like '%kota%' ale może jest jakiś > prostszy i bardziej uniwersalny sposób?
nie wiem skad takie akademickie opowiedzi poprzednikow, teoretyczne rozwazania sa dobre, ale trzeba wiedziec o czym sie pisze :)
MATCH (pole_w_bazie) AGAINST ('+ala +kota' IN BOOLEAN MODE)
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[MySQL] Zapytanie z pliku , wynik do pliku
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
zanotowane.pldoc.pisz.plpdf.pisz.plmisida.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|