Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielokrotne porównanie
Forum PHP.pl > Forum > Bazy danych > MySQL
axxxon
Witam!
W obecnym zapytanie które tworze chciałbym jednocześnie porównać jedno pole z kilkunastoma stringami naraz, normalnie pole zawiera tekst, w tym polu znajdować się może któreś ze słów kluczowych, jednak jak to sprawdzić bez używania
  1. `pole` LIKE '%klucz1%' OR `pole` LIKE '%klucz2%'

tylko czegos w stylu
  1. `pole` funkcja('%klucz1%','%klucz2%',...)


próbowałem już do tego wykorzystać 'any', jednak póki co nie widzę efektów...

prosiłbym o szybka pomoc
pedro84
MySQL => IN()
axxxon
funkcji in też próbowałem jednak nie było to rozwiązanie
w formie
  1. `pole` IN('%klucz1%','%klucz2%',...)

nie było wyszukiwania po całym tekście tj. całość przeszukiwanego pola tak jakby nie była sprawdzana
pmir13
  1. SELECT * FROM tabela
  2. WHERE pole REGEXP ('klucz1|klucz2|klucz3')

axxxon
nie wiem czemu ale u mnie ta funkcja działa znacznie wolniej i mniej wydajnie niż
  1. LIKE 'costam'
Crozin
Działa wolniej bo wymaga użycia całego mechanizmu wyrażeń regularnych zamiast prostego wyszukania podciągu w ciągu.

1. Rozważ zmianę struktury aplikacji i wywalenie słów kluczowych do innej tabeli oraz utworzenie relacji wiele-do-wielu - bazy danych typu MySQL są najlepiej przystosowane właśnie do przetwarzania danych w takiej formie.
2. Wyszukiwane pełnotekstowe?
3. W czym konkretnie przeszkadza Ci kilkukrotne wstawienie OR ... LIKE ...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.