Consulta en ASP
Hola. Estoy programando un buscador y me gustaría que el usuario pudiera introducir varias palabras de búsqueda y éstas se buscaran en los registros de una base de datos. El problema es que al hacer la consulta la búsqueda se realiza teniendo en cuenta que las palabras estén seguidas en los registros de la base de datos. Quisiera que las palabras se buscasen en las frases del registro sin tener que estar seguidas sino formando parte de las frases. La consulta que he realizado es la siguiente:
SELECT * FROM Tabla WHEN CampoBusqueda LIKE '%" + Replace(palabrasBusqueda, "'", "''") + "%'
No se si será posible lo que pido mediante una consulta en SQL. Si no es posible agradecería me indicaran alguna opción diferente para realizar las búsquedas. Muchas gracias.
SELECT * FROM Tabla WHEN CampoBusqueda LIKE '%" + Replace(palabrasBusqueda, "'", "''") + "%'
No se si será posible lo que pido mediante una consulta en SQL. Si no es posible agradecería me indicaran alguna opción diferente para realizar las búsquedas. Muchas gracias.
Yo utilizo la siguiente sentencia SQL y me funciona correctamente
cliente -> Tabla
nombre -> Campo Busqueda
session("buscas") -> variable q contiene la palabra de busqueda
SELECT * FROM clientes WHERE nombre like '%" & session("busca")& "%'"
Espero q te sirva.
cliente -> Tabla
nombre -> Campo Busqueda
session("buscas") -> variable q contiene la palabra de busqueda
SELECT * FROM clientes WHERE nombre like '%" & session("busca")& "%'"
Espero q te sirva.
Para que te encuentre las palabras sin que éstas tengan que estar seguidas necesitas crear una cláusula where por cada palabra:
If palabrasBusqueda <> "" Then
arraypalabrasBusqueda = Split(palabrasBusqueda, " ")
strSql = "SELECT * FROM Tabla"
For i = 0 To UBound(arraypalabrasBusqueda)
If i = 0 Then
strSql = strSql & " WHERE CampoBusqueda LIKE '%" & Replace(arraypalabrasBusqueda(i), "'", "''") & "%'"
Else
'Si en vez de OR ponemos AND todas las palabras deberán estar en el campoBusqueda pero no seguidas, con OR sólo basta con que esté una de ellas en el campoBusqueda
strSql = strSql & " OR CampoBusqueda LIKE '%" & Replace(arraypalabrasBusqueda(i), "'", "''") & "%'"
End If
If palabrasBusqueda <> "" Then
arraypalabrasBusqueda = Split(palabrasBusqueda, " ")
strSql = "SELECT * FROM Tabla"
For i = 0 To UBound(arraypalabrasBusqueda)
If i = 0 Then
strSql = strSql & " WHERE CampoBusqueda LIKE '%" & Replace(arraypalabrasBusqueda(i), "'", "''") & "%'"
Else
'Si en vez de OR ponemos AND todas las palabras deberán estar en el campoBusqueda pero no seguidas, con OR sólo basta con que esté una de ellas en el campoBusqueda
strSql = strSql & " OR CampoBusqueda LIKE '%" & Replace(arraypalabrasBusqueda(i), "'", "''") & "%'"
End If
Para los poco observadores en el ejemplo anterior meto las palabras (cualquier cosa separada por un espacio) en un array.
Se me olvidó cerrar el For, osea que pongáis Next al final del ejemplo.
Un saludo.
Se me olvidó cerrar el For, osea que pongáis Next al final del ejemplo.
Un saludo.