2017-03-27 94 views
0

我想添加一個新的列到現有的表,但是當我嘗試創建這個列名時,我得到一個無效的字符錯誤。是否可以在我的列名中包含%符號?

SQL錯誤:ORA-00911:無效字符 00911. 00000 - 「無效字符」 *原因:標識不得與 字母和數字以外的任何ASCII字符開始。 $#_也是在第一個 之後的字符。由雙引號括起來的標識符可能包含 除雙引號以外的任何字符。替代引號 (q'#...#')不能使用空格,製表符或回車作爲 分隔符。有關所有其他上下文,請參閱SQL語言參考手冊 。

這是我的代碼:

ALTER TABLE計算 添加WEIGHTED_%的數量;

我在做什麼錯?

+4

雙引號escape:'添加'WEIGHTED _%「' - 但它很煩人,不得不隨後 - 在每個查詢這個字段的單個查詢中 - 再次轉義它,'WEIGHTED_PERCENT'出現了什麼問題? –

+0

[請參閱數據庫對象命名規則。](https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm)特別是數字7.另請注意,Oracle不建議使用帶引號的標識符,在這裏做。 –

+0

也[可能是重複](http://stackoverflow.com/q/13798035/266304);我無法專門查看有關使用%的問題。 –

回答

0

我真的不建議在你的名字中使用%符號我建議你輸入百分比。但正如錯誤所述,你必須用雙引號將列名稱封裝起來。

Alter Table Calculations Add "WEIGHTED_%" Number; 

不知道那麼它仍然會工作,因爲%用於做類似的查詢和包括他們在暴露的查詢被認爲是一個漏洞,因爲它允許SQL注入保留字符。

+0

工作!謝謝!我不喜歡使用它的想法,但嘿,不是我的電話。 –

+1

在'SELECT'查詢中使用'%'字符(在雙引號內)不會引入SQL注入漏洞。如果您用來調用SQL命令的腳本語言使用'%'作爲特殊字符,那麼這可能是一個單獨的問題,但這與SQL沒有關係,完全取決於您如何調用SQL命令。 – MT0

0

是的。可能。對列名使用雙重代碼。檢查所附的屏幕截圖。 enter image description here


但是在列名中使用%並不好。不建議。

相關問題