54

&insert ステートメントに特殊文字を挿入したい。私の挿入は:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14');

このクエリを実行しようとすると、ポップアップが表示され、 の値を入力するよう求められますOracle_14

&Oracle db の挿入ステートメントのような特殊文字を入力するにはどうすればよいですか?

4

13 に答える 13

74

SQL*Plus または SQL Developer を使用している場合は、

SQL> set define off;

SQL ステートメントを実行する前に。これにより、置換変数のチェックがオフになります。

このような SET ディレクティブは、クライアント ツール (SQL*Plus または SQL Developer) の指示です。それらにはセッション スコープがあるため、接続するたびにディレクティブを発行する必要があります (デフォルトを変更して DEFINE を OFF に設定する場合は、クライアント マシンの glogin.sql にディレクティブを配置できます)。データベース内の他のユーザーやセッションに影響を与えるリスクはありません。

于 2010-11-14T00:13:22.077 に答える
26

試す'Java_22 '||'&'||' Oracle_14'

于 2010-11-14T00:16:17.297 に答える
19

ジャスティンの答えは道のりですが、FYIとして、挿入したい文字のASCII値で chr() 関数を使用することもできます。この例では、次のようになります。

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
于 2010-11-14T03:28:59.030 に答える
3

「&」を含む値を挿入するには。次のコードを使用します。

Set define off;

Begin

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14');

End ;

そして、Oracle または Toad Editors から F5 を押します。

于 2015-03-12T07:02:52.077 に答える
0

特殊文字セットについては、UNICODE Charts を確認する必要があります。キャラクターを選択したら、以下のSQLステートメントを使用できます。

SELECT COMPOSE('do' || UNISTR('\0304' || 'TTTT')) FROM dual;

--

どTTTT _

于 2016-10-05T12:21:32.000 に答える
0

のように先頭または末尾にエスケープ文字を追加する場合は"JAVA"、次を使用します。

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||'');
于 2013-10-10T13:10:23.770 に答える
0

別の方法も使用できます。たとえば、特殊文字 'Java_22 & Oracle_14' を含む値を db に挿入するには、次の形式を使用できます..

'Java_22 '||'&'||' Oracle_14'

3 つの異なるトークンと見なされますが、オラクルのドキュメントで提供されているエスケープ シーケンスの処理が正しくないため、オプションはありません。

于 2012-08-03T08:13:10.320 に答える
0
strAdd=strAdd.replace("&","'||'&'||'");
于 2017-06-06T07:13:54.510 に答える
-4

バックスラッシュ文字を使用して、単一の文字または記号をエスケープできます

'Java_22 \&Oracle_14'

または中括弧で文字や記号の文字列をエスケープします

'{Java_22&Oracle_14}'

于 2010-11-14T00:36:46.217 に答える