web-dev-qa-db-ja.com

Oracleデータベースに「&」などの特殊文字を入力するにはどうすればよいですか?

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

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

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

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

46
Rachel

SQL * PlusまたはSQL Developerを使用している場合は、実行する必要があります

SQL> set define off;

sQLステートメントを実行する前。これで、置換変数のチェックが変わります。

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

60
Justin Cave

'Java_22 '||'&'||' Oracle_14'を試してください

22
Eternal Noob

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

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
12
Craig

ドットをたどると、単に&をエスケープできます。これを試して:

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

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

Set define off;

Begin

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

End ;

OracleまたはToad EditorsのF5キーを押します。

2
Chikku Jacob

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

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

-

d ō TTTT

0
Ender Akdoğan

また、このようにconcatを使用できます:D

Insert into Table Value(CONCAT('Java ',CONCAT('& ', 'Oracle'));
0

strAdd = strAdd.replace( "&"、 "'||'& '||'");

0
Gank

これを行うには3つの方法があります。

1)単にSET DEFINE OFFを実行します。そして、挿入stmtを実行します。

2)予約語を単一引用符で囲んで連結するだけです。例えば。 「Java_22」を選択|| '&' || ':' || dual-(:)の 'Oracle_14'はオプションです。

3)連結とともにCHR機能を使用する。例えば。 「Java_22」を選択|| chr(38)|| 'デュアルからOracle_14 '

この助けを願っています!!!

0
SurajSingh444

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

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'Java'||chr(34)||'');
0
Surya

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

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

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

0
lakhcoool