busqueda total

11/01/2006 - 23:49 por Victor M | Informe spam
Hola buenas tardes tengo una db con una tabla de libros en la cual
quisiera realizar una busqueda de la sig. manera ...
Si yo busco quimica que me traiga todos los registros que en contengan la
palabra quimica
De antemano agradesco su ayuda
Victor M
Saludos

Preguntas similare

Leer las respuestas

#1 Maxi [MVP]
12/01/2006 - 01:36 | Informe spam
Hola

Select campos from tabla where titulo like '%quimica%'

pd: esto hara que los indices se usen de forma ineficiente


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org



"Victor M" escribió en el mensaje
news:%
Hola buenas tardes tengo una db con una tabla de libros en la cual
quisiera realizar una busqueda de la sig. manera ...
Si yo busco quimica que me traiga todos los registros que en contengan la
palabra quimica
De antemano agradesco su ayuda
Victor M
Saludos

Respuesta Responder a este mensaje
#2 Guillermo Roldan
12/01/2006 - 18:21 | Informe spam
Hola Victor,

Si quieres poder buscar por varias palabras, puedes utilizar SQL Dinámico
para generar dinámicamente una sentencia SQL con varias cláusulas LIKE
separadas por disyunciones. Es decir, si buscas por "TV LCD 28", que se
ejecute algo como:

Select * from tabla
where campo like '%TV%'
or campo like '%LCD%'
or campo like '%28%'

Incluso si quieres hacer la búsqueda extensible a varios campos, basta
aplicar la cláusula WHERE a la concatenación de los mismos:

Select * from tabla
where campo+campo2 like '%TV%'
or campo+campo2 like '%LCD%'
or campo+campo2 like '%28%'

Eso sí, si cabe la posibilidad de que haya nulos, tendrás que convertirlos a
cadena vacía antes de concatenar, y sobre todo, como dice Maxi, el
rendimiento se verá afectado. Sin embargo, si se trata de una BBDD con muy
pocos registros, te puedes construir un "buscador casero" la mar de
sencillo...

Saludos,
Guillermo

PD: Por dios... nunca utilices SELECT * !! yo solo lo puse como ejemplo...

"Victor M" wrote:

Hola buenas tardes tengo una db con una tabla de libros en la cual
quisiera realizar una busqueda de la sig. manera ...
Si yo busco quimica que me traiga todos los registros que en contengan la
palabra quimica
De antemano agradesco su ayuda
Victor M
Saludos



Respuesta Responder a este mensaje
#3 qwalgrande
12/01/2006 - 23:07 | Informe spam
Hola.

Un comentario. ¿ De verdad crees que lo más "peligroso" de esta consulta

Select * from tabla
where campo+campo2 like '%TV%'
or campo+campo2 like '%LCD%'
or campo+campo2 like '%28%'

es el asterisco?

Alberto López Grande (qwalgrande)
"Guillermo Roldan" escribió en
el mensaje news:
Hola Victor,

Si quieres poder buscar por varias palabras, puedes utilizar SQL Dinámico
para generar dinámicamente una sentencia SQL con varias cláusulas LIKE
separadas por disyunciones. Es decir, si buscas por "TV LCD 28", que se
ejecute algo como:

Select * from tabla
where campo like '%TV%'
or campo like '%LCD%'
or campo like '%28%'

Incluso si quieres hacer la búsqueda extensible a varios campos, basta
aplicar la cláusula WHERE a la concatenación de los mismos:

Select * from tabla
where campo+campo2 like '%TV%'
or campo+campo2 like '%LCD%'
or campo+campo2 like '%28%'

Eso sí, si cabe la posibilidad de que haya nulos, tendrás que convertirlos
a
cadena vacía antes de concatenar, y sobre todo, como dice Maxi, el
rendimiento se verá afectado. Sin embargo, si se trata de una BBDD con muy
pocos registros, te puedes construir un "buscador casero" la mar de
sencillo...

Saludos,
Guillermo

PD: Por dios... nunca utilices SELECT * !! yo solo lo puse como ejemplo...

"Victor M" wrote:

Hola buenas tardes tengo una db con una tabla de libros en la cual
quisiera realizar una busqueda de la sig. manera ...
Si yo busco quimica que me traiga todos los registros que en contengan
la
palabra quimica
De antemano agradesco su ayuda
Victor M
Saludos



Respuesta Responder a este mensaje
#4 Victor M
12/01/2006 - 23:23 | Informe spam
Muchas Gracias a todos por su ayuda funciono muy bien
Saludos
"Victor M" wrote in message
news:%
Hola buenas tardes tengo una db con una tabla de libros en la cual
quisiera realizar una busqueda de la sig. manera ...
Si yo busco quimica que me traiga todos los registros que en contengan la
palabra quimica
De antemano agradesco su ayuda
Victor M
Saludos

Respuesta Responder a este mensaje
#5 Guillermo Roldan
13/01/2006 - 08:40 | Informe spam
Nooo !! claro que no... (buena observación)

pero tampoco me gusta acostumbrar a la gente a utilizar el asterisco. Yo
personalmente jamás lo uso, mucho menos en sentencia del tipo "insert into
tabla select x,y from otratabla", etc., en las que un cambio en el esquema te
provocaría un "casque" en la aplicación... es decir, ya no sólo por el tema
de rendimiento (que en función del esquema de la tabla, las comunicaciones
etc, puede ser muy relevante), sino que también es una buena costumbre por
mantenimiento de las aplicaciones.

Por cierto, cometí otro error: Si se quiere hacer la búsqueda extensible a
varios campos, no es necesario concatenarlos si se van a utilizar
disyunciones, pero sí es posible que sea necesario concatenarlos si se desean
utilizar conjunciones (en este caso, el resultado si variará). Es decir:

Select * from tabla
where campo+campo2 like '%TV%'
and campo+campo2 like '%LCD%'
and campo+campo2 like '%28%'

ó

Select * from tabla
where campo like '%TV%'
or campo like '%LCD%'
or campo like '%28%'
or campo2 like '%TV%'
or campo2 like '%LCD%'
or campo2 like '%28%'

En cualquier caso, con tablitas de 20.000 registros va bien... sobre todo,
porque después del primer fullscan, se quedarán todas las páginas de la tabla
en memoria ;-))

Saludos,
Guillermo


> aplicar la cláusula WHERE a la concatenación de los mismos:




"qwalgrande" wrote:

Hola.

Un comentario. ¿ De verdad crees que lo más "peligroso" de esta consulta

Select * from tabla
where campo+campo2 like '%TV%'
or campo+campo2 like '%LCD%'
or campo+campo2 like '%28%'

es el asterisco?

Alberto López Grande (qwalgrande)
"Guillermo Roldan" escribió en
el mensaje news:
> Hola Victor,
>
> Si quieres poder buscar por varias palabras, puedes utilizar SQL Dinámico
> para generar dinámicamente una sentencia SQL con varias cláusulas LIKE
> separadas por disyunciones. Es decir, si buscas por "TV LCD 28", que se
> ejecute algo como:
>
> Select * from tabla
> where campo like '%TV%'
> or campo like '%LCD%'
> or campo like '%28%'
>
> Incluso si quieres hacer la búsqueda extensible a varios campos, basta
> aplicar la cláusula WHERE a la concatenación de los mismos:
>
> Select * from tabla
> where campo+campo2 like '%TV%'
> or campo+campo2 like '%LCD%'
> or campo+campo2 like '%28%'
>
> Eso sí, si cabe la posibilidad de que haya nulos, tendrás que convertirlos
> a
> cadena vacía antes de concatenar, y sobre todo, como dice Maxi, el
> rendimiento se verá afectado. Sin embargo, si se trata de una BBDD con muy
> pocos registros, te puedes construir un "buscador casero" la mar de
> sencillo...
>
> Saludos,
> Guillermo
>
> PD: Por dios... nunca utilices SELECT * !! yo solo lo puse como ejemplo...
>
> "Victor M" wrote:
>
>> Hola buenas tardes tengo una db con una tabla de libros en la cual
>> quisiera realizar una busqueda de la sig. manera ...
>> Si yo busco quimica que me traiga todos los registros que en contengan
>> la
>> palabra quimica
>> De antemano agradesco su ayuda
>> Victor M
>> Saludos
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida