Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2006
Migue Rguez Migue Rguez is offline
Miembro
 
Registrado: may 2003
Ubicación: Sanlúcar de Bda. (Cádiz)
Posts: 10
Poder: 0
Migue Rguez Va por buen camino
like

Hola Foro, sabemos q para buscar una cadena dentro de otra utilizamos LIKE de forma q

Código SQL [-]
WHERE CAMPO1 LIKE '%cadena%'

buscamos la subcadena 'cadena' en CAMPO1 pero... cómo hacer si queremos hacerlo al reves? Buscar el valor CAMPO1 en la cadena q le pasamos a LIKE.

Espero haber sido claro y q alguien tenga una respuesta.

Saludos!
Responder Con Cita
  #2  
Antiguo 06-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Qué estas intentando hacer? Porque dicho así... no lo pillo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 07-04-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Bueno.

Lo qu eentendi fue que si tienes una cadena (Ej 'gato'. que se haga una busqueda de cuales campos (Fields) tienen en su contenido (o registros) 'gato'.

Sera??

Saludos.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 07-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo entendí más o menos lo mismo.... pero... Si tengo 3 campos y resulta que el dato lo meto aleatoriamente en el campo1, campo2 o campo3, ¿de qué me sirve tener una estructura ordenada de bases de datos? Digo yo... para algo está un campo Observaciones donde meter toda esa morralla y por lo menos, ya sé donde tengo que buscar.

En el caso de hacer una pantalla de búsqueda genérica para todo tipo de Dataset, pues habría que mantener un orden, es decir, el primer campo de búsqueda en la interfaz lo asocio conceptualmente con el campo1 y así busco en ese campo nada más.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 07-04-2006
JOSEA JOSEA is offline
Miembro
 
Registrado: may 2004
Posts: 12
Poder: 0
JOSEA Va por buen camino
Hola a todos:
Supongo yo entendi que si tienes registros del tipo
azul
verde
gris
rojo

quienes hacer un like para que te salgan por ejemplo solo azul y rojo

partiendo de mi supuesto prueba esto
Código:
  select * from tabla where 'azul rojo' like '%'+campo+'%'
Espero que te sirva.
Responder Con Cita
  #6  
Antiguo 08-04-2006
Migue Rguez Migue Rguez is offline
Miembro
 
Registrado: may 2003
Ubicación: Sanlúcar de Bda. (Cádiz)
Posts: 10
Poder: 0
Migue Rguez Va por buen camino
Buenas de nuevo, gracias por vuestro aporte pero creo q yo debí haberme explicado mejor con un caso practico...

Supongamos q en CLAVES tengo una seria de adjetivos tales como
frio,
calor,
interesante,
aburrido,
intenso,
suave...
etc.. etc...

y el usuario introduce una frase en un TEdit tal como
'El frio era tan intenso q dolía la cara'.

Pues bien, el cometido sería q apartir de la frase introducida podamos tener como resultado los registros frio e intenso.

La solución q me da JOSEA ya la probé en su momento puesto q fue lo más lógico, pero ésto no da ningun resultado ni con like '%'+campo+'%' ni tampoco con like '%'||campo||'%'

Ahora mismo, para salir del paso, lo tengo solucionado con la funcion Pos

While not sql1.EOF do
begin
If Pos(sql1.FieldByNameAsString('CLAVES'), Edit1.Text) > 0 then
ShowMessage(' --- CADENA ENCONTRADA --- ');
sql1.Next;
end;

Pero a medida q el campo 'CLAVES' vaya teniendo más registros esto puede hacerse eterno.

Saludos y gracias!
Responder Con Cita
  #7  
Antiguo 08-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
La forma que se me ocurre tampoco es eficiente, pero en fin...

Código SQL [-]
 select * from tabla
where campo in ('El','frío','era','tan','intenso','que','dolia','cara')

El servidor puede volverse loco cuando sea un párrafo entero pero será cuestion de enviarle peticiones con frases cortas.

Hacerlo es muy fácil, solo necesitas una rutina que al pasarle una frase, detecte el espacio en blanco y use QuotedStr para añadirle las comillas y le añada las comas.

A ver si alguien aporta un método más eficiente.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 08-04-2006
Migue Rguez Migue Rguez is offline
Miembro
 
Registrado: may 2003
Ubicación: Sanlúcar de Bda. (Cádiz)
Posts: 10
Poder: 0
Migue Rguez Va por buen camino
Gracias Lepe!

Muy ingeniosa la propuesta e incluso la veo factible pues en mi caso, la cadena a pasar dudo q contenga más de 8 o 10 palabras.

No obstante, no me saca del aprieto esta forma ya q los registros del campo CLAVES pueden contener mas de una palabra. De todas formas gracias ya q estamos aprendiendo todos un poco.

Saludos
Responder Con Cita
  #9  
Antiguo 12-04-2006
FOURIER FOURIER is offline
Miembro
 
Registrado: dic 2005
Posts: 40
Poder: 0
FOURIER Va por buen camino
Espero te sirva

para el gestor
Código Delphi [-]
select * from tabla1 where 'El frio era tan intenso q dolía la cara'  like '*'+Campo+'*';

para delphi
Código Delphi [-]
Query.SQL.Text:='select * from tabla1 where '+''''+'El frio era tan intenso q dolía la cara'+''''+'  like '+''''+'%'+''''+'+'+Campo+'+'+''''+'%'+'''';
Query.Open

Puesto de otra manera

Código Delphi [-]
Query.SQL.Text:='select * from tabla1 where '+''''+ORACION.TEXT+''''+'  like '+''''+'%'+''''+'+'+Campo+'+'+''''+'%'+'''';
Query.Open
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:17:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi