2016-04-18 5 views
0

テーブルにいくつかの行のデータを挿入していますが、そのうちの1つが異常な結果を引き起こしています。コードはOracle SQL - 行を挿入するとポップアップ・ボックスが表示されますか?

INSERT INTO TABLE_GROUPRISK 
(GROUP, RISKLEVEL) VALUES ('APIs & Intermediates','Low'); 

です。この文を実行すると、中間語という単語がポップアップ表示されます。私はポップでXをクリックすると、行が

APIs null 

としてではなく

APIs & Intermediates 

として挿入されている誰もがここで何が起こっているのか知っていますか?

+3

&エスケープするか '前OFF' DEFINE SET使用する必要がありますクエリを実行しています。 Oracleは&を使用して、実行時にユーザ入力を定義/許可します – xQbert

+0

ここでそれについての長い議論があります:https://community.oracle.com/thread/468604?tstart=0 – xQbert

+1

@xQbert:正確には:Oracle **ツール* *ランタイム入力には '&'を使います。 Oracleデータベースではありません。別のツールを使用してSQL * PlusまたはSQL Developerを使用する場合、これは発生しません。 –

答えて

1

アンパサンド文字&は、SQL文字列でエスケープする必要があります。

代わりに文字コードに置き換えることができます。

INSERT INTO TABLE_GROUPRISK 
(GROUP, RISKLEVEL) VALUES ('APIs ' || chr(38) || ' Intermediates' ,'Low'); 

あなたが書いたときに最初に単一引用符

INSERT INTO TABLE_GROUPRISK 
(GROUP, RISKLEVEL) VALUES ('APIs &' || ' Intermediates','Low'); 
+0

これは完全に機能しました。ありがとうCathalMF – jdjohnson920

+0

@ jdjohnson920 upvoteと正しい答えとしてマークすることを忘れないでください。 – CathalMF

3

「&」がOracleはAA代替物を使用する値を要求する「&」そう、置換変数のために使用される前に、代わりにあなたが&を配置することができます;例えば:

SQL> INSERT INTO TABLE_GROUPRISK 
    2 ("GROUP", RISKLEVEL) VALUES ('APIs & Intermediates','Low'); 
Enter value for intermediates: XXX 
old 2: ("GROUP", RISKLEVEL) VALUES ('APIs & Intermediates','Low') 
new 2: ("GROUP", RISKLEVEL) VALUES ('APIs XXX','Low') 

1 row created. 

あなたは、単にそれを免れることはできない。

SQL> INSERT INTO TABLE_GROUPRISK 
    2 ("GROUP", RISKLEVEL) VALUES ('APIs \& Intermediates','Low'); 
Enter value for intermediates: YYY 
old 2: ("GROUP", RISKLEVEL) VALUES ('APIs \& Intermediates','Low') 
new 2: ("GROUP", RISKLEVEL) VALUES ('APIs \YYY','Low') 

1 row created. 

SQL> INSERT INTO TABLE_GROUPRISK 
    2 ("GROUP", RISKLEVEL) VALUES (q'[APIs & Intermediates]','Low'); 
Enter value for intermediates: ZZZ 
old 2: ("GROUP", RISKLEVEL) VALUES (q'[APIs & Intermediates]','Low') 
new 2: ("GROUP", RISKLEVEL) VALUES (q'[APIs ZZZ]','Low') 

1 row created. 

あなたが代入を避けるために決めることができます。

SQL> set define off 
SQL> INSERT INTO TABLE_GROUPRISK 
    2 ("GROUP", RISKLEVEL) VALUES ('APIs & Intermediates','Low'); 

1 row created. 



SQL> select "GROUP" from table_grouprisk; 

GROUP 
-------------------------------------------------------------------------------- 
APIs XXX 
APIs \YYY 
APIs ZZZ 
APIs & Intermediates 
関連する問題