oracle約束名中有特殊符號無法刪除約束

2022-02-03 19:31:35 字數 613 閱讀 7868

今天遇到乙個問題,本地資料庫乙個表中無法插入資料,檢查發現是因為表中乙個欄位有檢查約束,但是因為字符集的問題,約束條件中的中文變成了???,所以一直報錯,問題很明顯,重建這個約束就可以了,但是麻煩的是在刪除這個約束的時候報錯  ora-00933  命令未正確結束。無論是命令,還是用工具都不行,最後發現問題是在約束名上面,這個約束的名字是 'bin$50cuvhnkantgqwojwnga1a==$0' ,這個約束應該是建表時自動生成的名字,名字中有等號,而這個等號截斷了sql語句,導致報錯。經過一番查詢,終於找到了解決辦法,就是將這個名字用雙引號括起來,就可以了,語句如下:

alter table tf_en_exam_qualification 

drop constraint

"bin$50cuvhnkantgqwojwnga1a==$0

" cascade;

注意,一定要是雙引號,單引號不行。具體原因為:

在oracle中:雙引號的作用是:假如建立物件的時候,物件名、欄位名加雙引號,則示意oracle將嚴格區分大小寫,否則oracl都預設大寫。

我平時在oracle中一直沒用過雙引號,現在終於知道雙引號是這麼用的了。哈哈,記錄一下。

oracle 特殊符號

oracle 特殊符號 oracle萬用字元,運算子的使用 用於where比較條件的有 等於 包含 in not in exists not exists 範圍 between.and not between.and 匹配測試 like not like null測試 is null is not ...

oracle 特殊符號

oracle萬用字元,運算子的使用 用於where比較條件的有 等於 包含 in not in exists not exists 範圍 between.and not between.and 匹配測試 like not like null測試 is null is not null 萬用字元 在w...

oracle 特殊符號 的處理

在sql plus中預設的 表示替代變數,也就是說,只要在命令中出現該符號,sql plus就會要你輸入替代值。這就意味著你無法將乙個含有該符號的字串輸入資料庫或賦給變數,如字串 sql plus 系統會理解為以 sql 打頭的字串,它會提示你輸入替代變數plus的值,如果你輸入abc,則最終字串轉...