如何:讓Oracle表及欄位顯示為區分大小寫

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   使用   ar   strong   

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

??

???

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

??

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

??

實現方式:

不再用PL-SQL直接建表了,而改用PD(Power 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-00942:table 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轉換為大寫的形式。如所示:

??

到這裡,PD和Oracle就對應起來了,喜歡什麼形式的就自己動手去設定吧。

??

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

??

??

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

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

如何:讓Oracle表及欄位顯示為區分大小寫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.