2012-01-06 21 views
7

OracleでSQL文中の特殊文字をエスケープする簡単な方法はありますか? (すなわち、%、&、 ')私は手動でエスケープ文字に関してこのlinkを見ましたが、私はオラクルがこれを行う簡単な方法を提供している可能性があると考えていました。SQLでの特殊文字のエスケープ

注:私はORMを使用して動的SQL select文を生成しています。

+0

を行使する「エスケープ」必要がある唯一のものは、文字リテラル内の単一引用符です。あなたが言及する他のもののどれもがエスケープする必要のある「特殊文字」ではありません。 –

+1

@a_horse_with_no_name WHERE .. LIKE句を使用すると、実際にパーセント記号とアンダースコアが特殊文字になります。 – RuntimeException

答えて

16

バインド変数およびORMを使用している場合は、埋め込まれた単一引用符とアンパサンドが自動的に渡されるべきです。これらはSQL * PlusまたはSQL * Developerの特殊文字です。

リテラル文字%と_(ない彼らのマルチと単一文字のワイルドカードのバージョン)を探している場合は、あなたがlike条件のescape句を使用したいように使用するには:

select * from my_table where some_text like '/%%' escape '/'; 

ますのみsome_textがパーセント記号で始まる行を戻します。

2

SET DEFINE OFFコマンドのようなものを探しているようですが、これを実行するとSQLセッション全体に影響します。ただし、このコマンドでは、アンパサンド文字に特別な意味を与えることはできません。一重引用符などの他の特殊文字には影響しません。

エスケープ文字に関する追加情報へのリンクのカップルは、次のとおりです。

https://forums.oracle.com/forums/thread.jspa?threadID=2256637

http://docs.oracle.com/cd/B10501_01/text.920/a96518/cqspcl.htm

+1

アンパサンドはSQL * Plusクライアントによって認識されます。これは、実際のデータベースサーバーの特殊文字ではありません。 –

関連する問題