個人總結:
有時候在操作oracle資料庫的時候,發現很多時候存在 帶雙引號,有時候就不帶,有時候就是單引號。這個就有點兒疑惑。
單引號與雙引號在oracle中的作用:
單引號代表的是字串。而雙引號之中的表示字段或者表名。
關於oracle的大小寫問題:首先關鍵字 如select from 還有一些存在的表名 dual等 這些是不區分大小寫的。如select 與select 這是一樣的效果。但是對於欄位裡的值。假如 name這個屬性,存放了』aab』,那麼查詢的時候只能通過aab才能查詢到,查詢aab aab都不行。但是在mysql中,同樣情況,通過aab aba等都可以匹配到這個屬性。
關於oracle的其他表名及字段大小寫 及是否需要新增雙引號問題下面進行說明**。
建立表的時候不增加雙引號,檢視結果。
結論:建立表的時候不增加雙引號,欄位與表名是不區分大小寫,系統會預設將小寫都轉換為大寫,同時在查詢的時候,不加雙引號也不區分大小寫,但是如果一旦加上雙引號,必須要全部是大寫,否則會報錯。 字段值永遠區分大小寫。
如果不加增雙引號,查詢的時候欄位或表名加雙引號,那麼必須全部大寫。
見表時 增加雙引號,且字段/表名中都不全是大寫
結論:見表時候,如果增加了雙引號,並且欄位中不全是大寫,那麼在查詢/操作 欄位時,必須增加上雙引號,並且大小寫必須匹配好。
結論:只要欄位中有乙個全是大寫,那麼該字段就會被oracle自動識別,同時查詢的時候可以不帶雙引號,不區分大小寫,但是一旦加上雙引號,必須匹配大小寫。否則失敗。
對於oracle中雙引號的作用,個人覺得在建表時,如果沒有特殊要求,就不要帶雙引號,這樣查詢操作都方便。一旦加上雙引號,如果不全是大寫,那麼oracle就不會進行處理(自動全部轉為大寫),此時可以理解為區分大小寫,同時必須加上雙引號才能被識別。
誤區:有時候通過工具檢視表,發現表名/欄位名中有小寫,此時應該注意查詢格式,是否需要增加雙引號才能查詢到。
在字段內容中,如上面hh欄位的表中值的時候,oracle是區分大小寫。
首先這個問題需要從多方面來回答:
1.在關鍵字中如selcet from 等這些是不區分大小寫
2.在使用者名稱/密碼上,這個有設定,預設是區分大小寫。可以通過設定將密碼不區分帶小寫,但是使用者名稱就不曉得,其實這個不需要可以去記,因為使用者名稱密碼本身就用的比較少,更改也比較少,記住就行了。多測試兩下就行了
3,用在表中資料:查詢表中資料時候是區分大小寫的,如儲存abc與 abc是兩個值。
4.用在字段和表上時,這個需要檢視建表語句,建表語句中是否增加了雙引號,如果不增加雙引號,那麼可以理解為不區分大小寫,因為oracle或自動將不加雙引號的轉為大寫。如果加雙引號,需要看單個字段是否全為大寫,如果該欄位全為大寫,那麼該字段就不區分大小寫。理解一下,如果不理解這裡,可以檢視上面測試123.
關於oracle 例項名大小寫的問題
之前一直認為oracle例項名大小寫是不區分的,雖然是生產中偶爾遇到oracle sid改為大寫的問題,但也沒有深究。昨天由於資料庫伺服器異常重啟,導致資料庫重啟後,遠端連線無法連上,排查問題的時候一直以為是資料庫層面出現了問題。其實是被監聽資訊誤導了,lsnrctl status可以看到捕獲了例項...
大小寫問題
背景 系統包括單點登入模組,存在多個資料庫,有mysql和oracle 狀況 使用者說登入系統沒有反映。查錯 使用者的名字裡包含大寫x,登入時,使用者使用的是小寫x,單點登入時,mysql檢查通過 未區分大小寫 到了使用oracle的系統,檢查該使用者不存在。報錯,未捕捉異常。解決 1 修改mysq...
關於oracle表名區分大小寫的問題
oracle不是區分大小寫的,是建表的時候是沒有去掉雙引號。create table tablename id number 雖然寫的時候是有大寫和小寫,但是在資料庫裡面是不區分的。select from tablename 這樣是可以的 select from tablename 這樣寫也不會有問...