Lass das Leerzeichen halt weg.
Wenn Du meinen Code dann noch so änderst, funktioniert er auch (ausserdem ist die Whileschleife keineswegs langsam - sie wird maximal so oft durchlaufen, wie "Where" im statement vorkommt-1, d.h. bei einem "Where" wird sie nichtmal starten)!
Delphi-Quellcode:
var
FirstPos,
LastPos : Integer;
UGotTheFirst,
UGotTheLast,
ThereAreMany : Boolean;
QueryText : String;
begin
FirstPos := 0;
LastPos := 0;
FirstPos := pos('WHERE',UPPERCASE(QueryText));
UGotTheFirst := (FirstPos > 0);
LastPos := FirstPos;
while pos('WHERE',copy(UPPERCASE(QueryText),LastPos+5,MaxInt)) > 0
do LastPos := LastPos+5+pos('WHERE',copy(UPPERCASE(QueryText),LastPos+5,MaxInt));
UGotTheLast := (LastPos > 0);
ThereAreMany := (FirstPos <> LastPos);
end;
Gruß