2012-01-10 14 views
8

Bueno, actualmente quiero hacer un motor de búsqueda con SQL y PHP. Me crrently uso la siguiente consulta:Buscar en SQL donde la cadena comienza con X

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

pero quiero seleccionar la información con 'nombre' que comienzan con $ q, no los que cointain $ q.

+0

"Quiero hacer un motor de búsqueda", ¿qué significa eso? ¿Significa que quieres ejecutar una consulta? –

Respuesta

20

Simplemente quite el primer comodín (%):

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

Si estás interesado en campos que tienen varios nombres de búsqueda y desea buscar un nombre que podría estar en el medio del campo, a continuación, podría ser mejor usar Full Text Search (FTS). Por ejemplo, si el campo name en el OP se refiere a un nombre completo y podría contener "John Doe" y desea buscar "Doe", entonces FTS probablemente será mejor (más preciso y más rápido) que usar un operador LIKE. Con FTS, las palabras individuales en el texto están indexadas, por lo que las búsquedas pueden ser muy rápidas, además de permitir búsquedas más complejas, como la capacidad de encontrar dos palabras (o nombres) en un campo que no son adyacentes (para elegir un ejemplo en aleatorio).

El proveedor de base de datos específico no se menciona en el OP, pero si FTS es compatible, entonces podría ser una buena opción para lo que está intentando. Algunos FTS information for SQL Server y for MySQL se encuentran fácilmente con una búsqueda.

Cuestiones relacionadas