Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SIMILAR TO, i wyrazenia regularne
lukass
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 20.03.2002

Ostrzeżenie: (0%)
-----


Witam

mam problem przy otrzymywaniu odpowiednich i czystych wynikow za pomoca LIKE, wiec przerzucilem sie na SIMILAR TO majac nadzieje ze to pomoze, niestety jest gorzej niz przedtem :/.

Problem jest taki ze staram sie szukac ciagu znakow ktory ma nastepujace cechy:
- jest na poczatku
- jest na koncu
- jest gdzies pomiedzy poczatkiem a koncem

czyli wyszedlem z zalozenia ze wyrazenie powinno miec wyglad taki: (^|\s)tekst(\s|$).
Gdyz uzywajac LIKE i % czasami ciag znakow byl w jakims innym a tu chodzi o oddzielne slowo/slowa. Niestety wyniki sa rzadne a ciag znakow sie pokrywa z wieloma.

Ktos moze wie gdzie popelniam blad?
Bylbym wdzieczny za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukass
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 20.03.2002

Ostrzeżenie: (0%)
-----


Cytat(Jabol @ 2005-07-12 21:18:55)
Szukasz x słów, które muszą być obok siebie? to oznacza, że będziesz prawdopodobnie musiał zrobić x! wyrażeń połączonych OR, albo 3*(x!) jeżeli będziesz to robił przez LIKE. Radze Ci poszukać każdego słowa osobno i tym się zadowolić, bo ten poprzedni sposób przy większej ilości słów się rozjedzie kompletnie. Czyli
  1. WHERE xxx ~ 'taki' AND xxx ~ 'sobie' AND xxx ~ 'ciag';

Szukam slow ktore musza wystapic w rekordzie czy beda obok siebie to mnie nie interesuje, takze wyrazen bedzie kilka razy mniej niz LIKE'ow, tylko wlasnie w tym problem ze to wyrazenie mi nie dziala a to bylo moje pytanie jak je poprawic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Sprawdze z tylda tak jak podales, czy to cos da (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

===

Sprawdzilem, tylda dziala jak LIKE z % ale do niej tez mozna wyrazenie dac przy wyszukiwanym slowie/frazie. Niestety to jest problem ktorego nie moge zbagatelizowac robiac prowizorke poniewaz mam baze z kilkoma milionami rekordow i nie jestem jej w stanie przeszukac recznie czy wyrzucac bledne wyniki pozniej...

ROZWIAZANIE PROBLEMU!

Kod
...WHERE komorka ~* '(^| )tekst1( |$).*' AND komorka ~* '(^| )tekst2( |$).*' AND...


W tym zapytaniu wyszuka komorki z dwoma slowami ktore sie znajduja i BEDA TO POJEDYNCZE SLOWA nie zawarte w innych ciagach znakow.

Ufff pomeczylem i dziala, problemem byl znacznik spacji (\s) niechcial tego przyjmowac... dlatego wpisalem zwykla spacje w wyrazeniu i dziala, moze ktos bedzie madrzejszy i znajdzie moj blad.

Ten post edytował lukass 12.07.2005, 23:03:59
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 21:08