2008-11-06 131 views
13

我想要做这样的事情:在Delphi 7中,如何在Format函数中转义百分号(%)?

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

但格式不喜欢,去年“%”,当然。那么我怎么能逃脱它? \%%%

还是我必须这样做:

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

+2

注意,你应该更好地使用参数查询,或至少在处理引号的SearchTerm(例如,通过QuotedStr()调用)。 – 2012-09-06 09:29:35

回答

26

格式字符串用另一个%:

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

强制性: http://xkcd.com/327/ :-)

根据上下文,你的方法可能会受到SQL注入攻击。如果搜索条件来自用户输入,则最好使用参数化查询或至少尝试清理输入。

+0

确实,这将是脆弱的..但这是一次性POC。我还没有真正想出如何在LIKE中使用参数化查询。 – Blorgbeard 2008-11-06 19:52:02

0

添加2百分号有1单%
例子:

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

给你

select foo from bar where baz like '%SearchString%' 
相关问题