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);
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 ');
Lista[i] := StringReplace(Lista[i], '''', '''''', [rfReplaceAll]);
Query := Query + ' Nombre 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