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