Oracle のエスケープ文字: 1. 文字列を引用するかエスケープするために使用される一重引用符; 2. 不正な形式の文字をラップするために使用される二重引用符; 3. "&" つまり、and 記号は次の目的で使用されます。 2 つのエスケープ自体を接続する; 4. エスケープは、エスケープ文字として非特殊記号を指定するために使用されます。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
1. Oracle の特殊文字エスケープ
キーワード: oracle エスケープ
#plsql で実行:update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'この SQLこのステートメントは、URL アドレスをデータベースの pageurl フィールドに入力しますが、Oracle の特殊文字が含まれているため、実行時にはあまり理想的ではありません。エスケープする必要があります。つまり、文字 '&' です。上記の例の特殊文字はどのように処理すればよいですか? 2 つの方法: 1) ユーザー情報を更新 setpageurl='myjsp?page=1'||'&'||'pagesize=10' where id='test'
2) ユーザー情報を更新 setpageurl='myjsp?page=1'||chr(38)||'pagesize=10' ここで id='test' || はハイフン、chr( 38 ) ASCII 文字トランスコーディングと一致しています。 plsql では、define off を設定して特殊文字をオフにすることもできます。また、show define を使用して特別に定義された文字を表示することもできます。 2. oracle で特殊文字をエスケープする方法質問: アンダースコアをエスケープする方法_
select * from ng_values where name like 'lady_%'jieguo 結果は、lady_test,lady_test,lady1 であることを示しています。正しい結果は次のようになります: lady_test, lady_testlady1 を除くエスケープ メソッド、3ksanswer:
select ... from ... where ... like '/_%' escape '/';3,
insert into t(col) values(chr(ascii('&'))) ;(方法 1)例: 特殊文字を挿入 '&'
SQL> SHOW DEFINE define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’ SQL> SET DEFINE OFF SQL> SHOW DEFINE define OFF SQL> INSERT INTO <table_name> VALUES ('AT&T');/1 行作成されました(方法 2 )
SQL> SHOW ESCAPE escape OFF <--- ESCAPE的default值是 OFF SQL> SET ESCAPE ON SQL> SHOW ESCAPE escape "\" (hex 5c) SQL> INSERT INTO temp_table VALUES ('select * from emp where ename =\&1');1 行が作成されました。; いくつかのテスト方法:
SELECT 'myjsp?page=1&pagesize=10' FROM dual; SELECT 'myjsp?page=1&pagesize=10' FROM dual; SQL> create table a (b varchar2(10)); Table created SQL> insert into a values('_a');1 行が挿入されました
SQL> select B from A where instr(b,'_a')>0; B ---------- _a select B from A where b like '%\_a%' escape '\'最初に転送を開始します シンボル setエスケープ on
select B from A where b like '%\_a%' escape '\'; select B from A where b like '%\_a%' escape '\';二重引用符"はOracleではエスケープ文字ではないため、エスケープせずに直接保存できます。
oracle エスケープ文字は次のとおりです:
1、一重引用符
ORACLE では一重引用符には 2 つの機能があります: 1) 文字列を引用符で囲む、2) エスケープ文字列を引用する場合、一重引用符はペアで指定され、エスケープ文字自体も偶数である必要があるため、SQL ステートメントでは一重引用符はペアで指定する必要があります。複雑なエスケープ文字列は、理解しやすいように接続記号 || で分割できます。接続記号 '||' を囲む一重引用符は、'||' が文字列の一部である場合を除き、関係を持ちません (これは動的 SQL で非常に一般的です)。 .
Select 'abc' a,'' b, '''' c, ' '' ' d From Dual;
2、二重引用符
1) 一般的に、文字列内の二重引用符は通常の文字としてのみ扱われます。現時点では、二重引用符をペアで使用する必要はありません:Select 'name' || '''''' a, 'name''''' b From Dual; Output:name'' name''2) to_char の書式文字列に使用する場合、二重引用符には特別な機能があり、不正な書式文字を囲んで回避します。 ORA-01821: 日付形式が認識されないエラーです。
つまり、二重引用符とそれに含まれる文字を削除した後、残りは有効な形式文字列である必要があります。
to_char は無視されますフォーマット文字列を処理するときは二重引用符で囲みます: Select To_Char(Sysdate, 'hh24"hour"mi" minutes" ss"seconds"') As "Current Time/Hour Minutes Seconds" From Dual;出力:09 時間 05 分 08 秒 -- このアプリケーションはエイリアスにも存在します形式文字列は 'hh24" 時 "mi" 分 "ss" 秒"'; 二重引用符を削除すると、「hh24miss」が残ります。これは正当な書式指定文字列です。 ただし、二重引用符の使い方がよくわからない場合でも、少し面倒ではありますが、次のように処理できます。 Select To_Char(Sysdate, 'hh24) ') || 'Hour' || To_Char (Sysdate, 'mi') || 'Min' || To_Char(Sysdate, 'ss') || 'Second' デュアル;出力の結果: 09 時間 05 分 08 秒3,& (および記号)
はカスタム変数の識別/設定に使用され、その後に変数名が続きます。を文字として使用する必要がある場合は、Chr (38) を使用するか、2 つの && を接続する (エスケープ自体)Select 'hh24"小时""mi""分"""ss"秒"' Results From Dual; Output:hh24"小时""mi""分"""ss"秒"4, Escape(エスケープ文字を指定する)非エスケープ文字としての特殊記号。主にワイルドカード エスケープに使用されます。
Select Chr(38) a, 'Tom&&Jerry' b, 'Gun ''N Roses' c From Dual; Output:& Tom&Jerry Gun 'N Roses推奨チュートリアル: "Oracle Video Tutorial"
以上がOracleのエスケープ文字とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。