ホームページ >データベース >Oracle >Oracleのエスケープ文字とは何ですか

Oracleのエスケープ文字とは何ですか

WBOY
WBOYオリジナル
2022-01-25 14:12:487665ブラウズ

Oracle のエスケープ文字: 1. 文字列を引用するかエスケープするために使用される一重引用符; 2. 不正な形式の文字をラップするために使用される二重引用符; 3. "&" つまり、and 記号は次の目的で使用されます。 2 つのエスケープ自体を接続する; 4. エスケープは、エスケープ文字として非特殊記号を指定するために使用されます。

Oracleのエスケープ文字とは何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle のエスケープ文字とは

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_test

lady1

を除くエスケープ メソッド、3ks

answer:

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 (&#39;AT&T&#39;);

/

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 (&#39;select * from emp where ename =\&1&#39;);

1 行が作成されました。

いくつかのテスト方法:

SELECT &#39;myjsp?page=1&pagesize=10&#39; FROM dual;
SELECT &#39;myjsp?page=1&pagesize=10&#39; FROM dual;
SQL>   create   table   a  (b   varchar2(10));  
Table   created  
SQL>   insert   into   a  values(&#39;_a&#39;);

1 行が挿入されました

SQL>   select   B   from  A   where   instr(b,&#39;_a&#39;)>0;  
B  
----------  
_a  
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;

最初に転送を開始します シンボル

setエスケープ on

select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;

二重引用符"はOracleではエスケープ文字ではないため、エスケープせずに直接保存できます。

oracle エスケープ文字は次のとおりです:

1、一重引用符

ORACLE では一重引用符には 2 つの機能があります: 1) 文字列を引用符で囲む、2) エスケープ

文字列を引用する場合、一重引用符はペアで指定され、エスケープ文字自体も偶数である必要があるため、SQL ステートメントでは一重引用符はペアで指定する必要があります。複雑なエスケープ文字列は、理解しやすいように接続記号 || で分割できます。接続記号 '||' を囲む一重引用符は、'||' が文字列の一部である場合を除き、関係を持ちません (これは動的 SQL で非常に一般的です)。 .

Select &#39;abc&#39; a,&#39;&#39; b, &#39;&#39;&#39;&#39; c, &#39; &#39;&#39; &#39; d From Dual;

2、二重引用符

1) 一般的に、文字列内の二重引用符は通常の文字としてのみ扱われます。現時点では、二重引用符をペアで使用する必要はありません:

Select &#39;name&#39; || &#39;&#39;&#39;&#39;&#39;&#39; a, &#39;name&#39;&#39;&#39;&#39;&#39; b From Dual;
Output:name&#39;&#39;  name&#39;&#39;

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 &#39;hh24"小时""mi""分"""ss"秒"&#39; Results From Dual;
Output:hh24"小时""mi""分"""ss"秒"

4, Escape(エスケープ文字を指定する)

非エスケープ文字としての特殊記号。主にワイルドカード エスケープに使用されます。

Select Chr(38) a, &#39;Tom&&Jerry&#39; b, &#39;Gun &#39;&#39;N Roses&#39; c From Dual;
Output:&    Tom&Jerry    Gun &#39;N Roses
推奨チュートリアル: "Oracle Video Tutorial

"

以上がOracleのエスケープ文字とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。