如何:讓Oracle表及字段顯示為區分大小寫


相信大部分用慣了SQL Server的人,剛開始用Oracle肯定會特不習慣,因為通常情況下,Oracle建的表名和字段名都會自動給我們轉換為大寫的。如下圖所示:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

   

    

說實話,筆者當初第一次接觸Oracle的時候,也看着很不爽,可那會也只能無奈,因為沒法解決。所以心理一直在想,如果能顯示成區分大小寫的該多好啊,於是我實現了心中的願意,如下圖所示:

   

期盼已久的效果終於實現了,特別高興,所以我要告訴大家實現原理,以期待更多像我一樣追求美觀的人得到 一種心理安慰。

   

實現方式:

不再用PL-SQL直接建表了,而改用PDPower Desginer)的方式建表。因為我發現不管我們是否大小寫區分PL-SQL都會自動幫我們轉換稱大寫的了。PD自動生成的SQL如下:

create table "TDepartment"  (

   FID                  NVARCHAR2(36)                  not null,

   "FText"              NVARCHAR2(50)                   not null,

   "FParentID"          NVARCHAR2(36)                   not null,

   "FLevel"             NUMBER,

   "FAutoCode"          NVARCHAR2(100),

   "FCode"              NVARCHAR2(50),

   "FLeaf"              NUMBER                         default 1 not null,

   "FRemark"            NVARCHAR2(500),

   "FDataServerIP"      NVARCHAR2(100),

   "FDataServerPort"    NVARCHAR2(10),

   "FMediaServerIP"     NVARCHAR2(100),

   "FMediaServerPort"   NVARCHAR2(10),

   "FDataServer"        NVARCHAR2(200),

   "FMediaServer"       NVARCHAR2(200),

   constraint PK_TDEPARTMENT primary key (FID)

);

   

(字段說明的腳本在這就省略了)

   

原理分析:

PL自動生成的創建表的腳本中,表名和字段名都加了雙引號。雙引號在Oracle中表示區分大小寫,Oracle是嚴格區分大小寫的,未使用雙引號時默認全部大寫。可能很多人都會誤認為oracle是不區分大小寫的,原因是我們在寫查詢語句的時候,大小寫無所謂,結果都是一樣的,這只是個表面現象,只要你不使用雙引號表示區分大小寫,oracle會默認把你寫的腳本全部轉換為大寫的。從下面可以看出:

   

   

因為Oracle默認存儲為大寫形式,所以PL-SQL顯示的效果也是大寫的。 

   

   

   

正是因為區分大小寫,所以在Oracle中可以存在大小寫並存的同名表或表字段。

   

到這里大家我想大家應該明白了,怎么使Oracle區分大小寫了,就是使用雙引號。

   

   

思考:既然Oracle可以區分大小寫,那為什么大家在使用的時候都寧願選擇看着不舒服的大寫形式呢?下面這個實驗我們將給出答案,如下圖所示:

   

   

正如上面所講,如果我們不加雙引號,那么Oracle會默認把表名和字段名全部轉換為大寫形式。

最簡單的查詢語句:select * from TCamera   

會報錯,提示:ORA-00942table or view does not exist   表或試圖不存在

在這個時候,我們看提示應該很容易明白了,原因是在Oracle中的user-tables 不存在我們要查詢的TCAMERA[自動轉換稱大寫的]表。

那么正確的語句應該是:select * from "TCamera"   需要加雙引號

   這個時候就感覺很不舒服了,那寫查詢多不方便呀,而且不僅是表名需要使用雙引號,如果查詢某些特定字段也需要加雙引號,那么此時給開發人員將帶來諸多的不便。這也就是為什么大家都寧願選擇全部大寫的了。明白了嗎?

   

    

Power Designer的對應設置:

使用PD的人就會有問題了,既然默認PD生成的都是帶雙引號區分大小寫的,那怎么把雙引號去掉呢,總不能一個一個改吧?呵呵,既然你想到了,那么Sybase的團隊自然也是想到了,所以通過下面的設置步驟,就能去掉PD自動生成腳本的雙引號了。

找到菜單Database—>Edit Current DBMS  會打開DBMS屬性設置窗口,找到ScriptàSqlàCaseSensitivityUsingQuote,選擇No,即大小寫不區分。如下圖所示:

   

   

點擊確定后,系統會提示是否保存設置,請點擊""

   

這個時候我們來對比看一下生成的SQL 

   

   

設置前,PD默認區分大小寫,表名和字段都帶雙引號,如下圖所示:

   

   

   

設置后,不區分大小寫,所有的都不帶雙引號,所以生成的表及其字段都將默認被Oracle轉換為大寫的形式。如下圖所示:

   

到這里,PDOracle就對應起來了,喜歡什么形式的就自己動手去設置吧。

   

最后我們對比一下SQL Server Oracle在查詢具體內容上的區別,讓大家更深刻地認識到我們平時可能存在的誤解。

   

   

這表明,SQL Server在表字段內容中,其實也是不區分大小寫的。但是Oracle就不同,同樣的狀況,Oracle肯定查詢不到數據,因為Oracle嚴格區分大小寫。不信自己可以去試試。

轉自: 飛天心宏  2011-12-21


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM