Club Delphi  
    Paypal   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 19-02-2026
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 139
Poder: 21
Alejandro73 Va por buen camino
Buscar Cadenas dentro de un Texto

Buenas tardes Foristas

Tengo la siguiente inquietud: en una tabla tengo productos con su respectivo nombre; Ejemplo Filtro Aceite W65/9045 y la búsqueda en el Sp es

Where Nombre like '%'+VariableNombre+'%'

Al realizar la busqueda cuando el usuario ingresa

Filtro en la VariableNombre lo encuentra
Aceite en la VariableNombre lo encuentra
W65/9 en la VariableNombre lo encuentra
Filtro Aceite en la VariableNombre lo encuentra

Pero si escribe Filtro W65 no lo encuenta.

Como puedo separar el texto de la VariableNombre en el SP y asignarlo a variables para poder hacer la consulta y que lo encuentre

Where Nombre like '%'+VariableNombre1+'%'
OR like '%'+VariableNombre2+'%'
OR like '%'+VariableNombre3+'%'


Gracias!!!!!!!
__________________
Los muertos en CRISTO de sus tumbas volveran y los que vivimos en las nubes nos levantara .......
Responder Con Cita
  #2  
Antiguo 20-02-2026
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 147
Poder: 21
aledieb Va por buen camino
Esto te puede servir aunque es en pascal.
Código Delphi [-]
function SepararPalabrasYPrepararQuery(const Input: string; CondicionAND: boolean = True): string;
var
  Lista: TStringList;
  i: Integer;
  Query: string;
begin
  Result := '';
  Query := '';

  Lista := TStringList.Create;
  try
    Lista.Delimiter       := ' ';
    Lista.StrictDelimiter := True;
    Lista.DelimitedText   := Trim(Input);   // corta espacios múltiples y vacíos

    // Limitamos a 5 palabras Opción personal una limitación que yo obligo.
    if Lista.Count > 5 then
      Lista.Count := 5;

    for i := 0 to Lista.Count - 1 do
    begin
      if i > 0 then
        Query := Query + IfThen(CondicionAND, ' AND ', ' OR ');

      // Escapamos comillas simples
      Lista[i] := StringReplace(Lista[i], '''', '''''', [rfReplaceAll]);
      // acá podes poner otro parámetro para hacerlo más genérica
      Query := Query + ' Nombre LIKE ''%' + Lista[i] + '%''';
      // acá podes poner otro parámetro para hacerlo más genérica
      // quedaria más o menos Query := Query + ' '+snombrecampo +' LIKE ''%' + Lista[i] + '%''';
    end;

    Result := Query;
  finally
    Lista.Free;
  end;
end;
Llamado:
Código Delphi [-]
respuesta:= SepararPalabrasYPrepararQuery('Filtro Aceite W65/9',false);
devuelve:
Código Delphi [-]
"Nombre like '%Filtro%' OR Nombre like '%Aceite%' OR Nombre like '%W65/9%'"
ö
"Nombre like '%Filtro%' AND Nombre like '%Aceite%' AND Nombre like '%W65/9%'"

La idea general me la dio Grok
__________________
Suerte
Alejandro

Última edición por aledieb fecha: 20-02-2026 a las 02:24:42.
Responder Con Cita
  #3  
Antiguo 20-02-2026
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si tu motor de BD tiene soporte de "Full text search" es mejor usarlo, como en https://www.postgresql.org/docs/current/textsearch.html
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 20-02-2026
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 138
Poder: 13
chenech Va por buen camino
Yo lo tengo también asi: Where Nombre like '%'+VariableNombre+'%'
y si quiere buscar palabras escribe "Filtro%W64".
Pero si quieres que no tenga que escribir el %, usa un Replace en el String y cambia espacio por % y te funciona también.
Al final tendria "%Filtro%W64%"
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manejo de cadenas de texto. mcasso Varios 3 18-03-2010 07:23:24
Comparar dos cadenas de texto creus Varios 5 06-03-2009 00:22:13
Buscar string dentro de un archivo de texto didier Varios 4 13-04-2007 21:14:00
Buscar dentro de Archivo Texto o PDF... MasterXP OOP 0 12-10-2005 09:24:31
como buscar dentro de una consulta un texto que sea parte de la descripcion viajero2015 Conexión con bases de datos 1 15-11-2003 05:18:09


La franja horaria es GMT +2. Ahora son las 06:41:31.


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