在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+'%']);
解决方案
在格式字符串中使用另一个%:
SQL.Text := Format('select foo from bar where baz like ''%s%%''',[SearchTerm]);
其他提示
%%,IIRC。
强制性: http://xkcd.com/327/ : - )
根据上下文,您的方法可能容易受到SQL注入攻击。如果搜索词来自用户输入,那么使用参数化查询或者至少尝试清理输入可能会更好。
添加2%的符号以获得1个单一%
示例:
Format('select foo from bar where baz like ''%%%s%%'',[SearchString])
给你
select foo from bar where baz like '%SearchString%'
不隶属于 StackOverflow