2008-11-06 125 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%' 
相關問題