標籤: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表及欄位顯示為區分大小寫