Delphi 7では、Format関数でパーセント記号(%)をエスケープするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/267487

質問

このようなことをしたい:

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