2012-01-10 8 views
8

Cóż, obecnie chcę zrobić wyszukiwarkę z SQL i PHP. I crrently użyć następującego zapytania:Wyszukiwanie w języku SQL, gdzie ciąg zaczyna się od X

SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10 

Ale chcę, aby wybrać informacje z „imienia”, które zaczynają się od $ q, a nie te, które cointain $ q.

+0

"Chcę zrobić wyszukiwarkę", co to znaczy? czy to znaczy, że chcesz wykonać zapytanie? –

Odpowiedz

20

Wystarczy usunąć pierwszy wieloznacznych (%):

SELECT * FROM info WHERE name LIKE 'X%' LIMIT 10 
0

Jeśli chcą na pola wyszukiwania, które mają wiele nazw i chcesz wyszukać nazwy, która może znajdować się w środku pola, a następnie może być lepiej użyć Full Text Search (FTS). Na przykład, jeśli pole name w OP odnosi się do pełnej nazwy i może zawierać "John Doe" i chcesz wyszukać "Doe", wówczas FTS prawdopodobnie będzie lepszy (dokładniejszy i szybszy) niż przy użyciu operatora LIKE. W przypadku FTS poszczególne słowa w tekście są indeksowane, więc wyszukiwanie może być bardzo szybkie, a ponadto pozwala na bardziej złożone wyszukiwania, takie jak możliwość znalezienia dwóch słów (lub nazw) w polu, które nie sąsiadują (aby wybrać jeden przykład z losowy).

Określony sprzedawca bazy danych nie jest wymieniony w PO, ale jeśli FTS jest obsługiwany, może być dobrym wyborem dla tego, co próbujesz. Niektóre FTS information for SQL Server i for MySQL można łatwo znaleźć podczas wyszukiwania.

Powiązane problemy