Для такого простого запроса, как этот, вы можете взломать простой алгоритм чтения текста, подобный следующему. Это работает для вашего конкретного запроса, и это может быть "достаточно хорошо". Просто передайте пустой TStringList.
uses
StrUtils;
procedure ExtractParams(input: string; output: TStrings);
var
colon, endpoint: integer;
begin
colon := pos(':', input);
while colon <> 0 do
begin
input := RightStr(input, length(input) - colon);
endpoint := 0;
repeat
inc(endpoint)
until input[endpoint] in [' ', ')']; //add other characters here as necessary
output.Add(LeftStr(input, endpoint - 1));
colon := pos(':', input);
end;
end;
Однако, если вы хотите выполнить более сложный синтаксический анализ SQL, вам лучше всего взглянуть на настоящий парсер. Взгляните на GOLD Parser , который может анализировать несколько разных языков, включая SQL, на основе файлов определения языка. На сайте доступна реализация парсера на Delphi.