2017-03-27 6 views
0

私は、既存のテーブルに新しい列を追加しようとしているが、私は、この列名を作成しようとすると、私は無効な文字エラーを取得しています。カラム名に%記号を付けることは可能ですか?

SQLエラー:ORA-00911:無効な文字 00911. 00000 - "無効な文字" *原因:識別子が 文字と数字以外の任意のASCII文字で始めることはできません。最初の 文字の後に$#_も使用できます。二重引用符で囲まれた識別子には、二重引用符以外の任意の文字の が含まれている場合があります。代替引用符 (Q「#...#」)は 区切り文字としてスペース、タブ、改行を使用することはできません。他のすべてのコンテキストについては、SQL言語 リファレンスマニュアルを参照してください。

これは私のコードです:

アルター表計算は WEIGHTED_%の番号を追加します。

私は間違っていますか?私は本当にあなたに%記号を使用することはお勧めしません

+4

二重引用符はエスケープ? –

+0

[命名規則データベースオブジェクトを参照してください。](https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm)特に数7.また、Oracleは、あなたが持っていると思われる、引用符で囲まれた識別子を使用することはお勧めできませんのでご注意ここで行うこと。 –

+0

また、[おそらく重複](http://stackoverflow.com/q/13798035/266304);特に%を使用することに関する質問は表示されません。 –

答えて

0

は、私が代わりにパーセントを入力して推薦する名前を付けます。しかし、エラーが表示されるので、列名を二重引用符で囲む必要があります。 %は、クエリのように行うと、それはSQLインジェクションを可能にするため、脆弱性が考えられているさらさクエリに含めるための予約文字であるため、それはまだ動作します

Alter Table Calculations Add "WEIGHTED_%" Number; 

わかりません。

+0

それはうまくいった!ありがとう!私はそれを使う考えが嫌いですが、私の呼び出しではありません。 –

+1

'SELECT'クエリで'% '文字(二重引用符で囲んだもの)を使用するとSQLインジェクションの脆弱性が導入されません**。 SQLコマンドを呼び出すために使用するスクリプト言語が特殊文字として '%'を使用する場合、それは別の問題かもしれませんが、SQLとは無関係であり、SQLコマンドの呼び出し方法に完全に依存します。 – MT0

0

はい。可能。列名には二重コードを使用してください。添付のスクリーンショットを確認してください。 enter image description here


ただし、列名に%を使用することは好ましくありません。お勧めしません。 `「_ WEIGHTED%を」`追加 - が、その非常に迷惑はその後する必要がありますする - このフィールドを扱うすべての単一のクエリで - 再びそれを逃れる、いただきました! `WEIGHTED_PERCENT`と間違っ:

関連する問題