我想做这样的事情:

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%'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top