В Delphi 7 как избежать знака процента (%) в функции Format? - PullRequest
17 голосов
/ 06 ноября 2008

Я хочу сделать что-то вроде этого:

SQL.Text := Format('select foo from bar where baz like ''%s%''',[SearchTerm]);

Но Формату, конечно, не нравится последний «%». Так как я могу избежать этого? \%? %%?

Или я должен сделать это:

SQL.Text := Format('select foo from bar where baz like ''%s''',[SearchTerm+'%']);

Ответы [ 4 ]

29 голосов
/ 06 ноября 2008

Используйте другой% в строке формата:

SQL.Text := Format('select foo from bar where baz like ''%s%%''',[SearchTerm]);
6 голосов
/ 06 ноября 2008

%%, IIRC.

4 голосов
/ 06 ноября 2008

Обязательно: http://xkcd.com/327/ : -)

В зависимости от контекста ваш подход может быть уязвим для внедрения SQL. Если поисковый термин прибывает из пользовательского ввода, вероятно, было бы лучше использовать параметризованный запрос или хотя бы попытаться санировать ввод.

0 голосов
/ 23 сентября 2013

Добавьте 2 знака процента, чтобы иметь 1 единственный%
Пример:

 Format('select foo from bar where baz like ''%%%s%%'',[SearchString])

Дает вам

select foo from bar where baz like '%SearchString%'
...