如下圖,是員工薪資管理模塊中的一個(gè)員工薪資表。這個(gè)表在外行人眼里看起來已經(jīng)比較完美了。但是,其仍然有不少可以完善的地方。
一、 在貨幣前面加入本地貨幣符號(hào)。
貨幣字段在系統(tǒng)中,是一個(gè)比較復(fù)雜的字段。特別是在一些涉及到多貨幣的管理系統(tǒng)中,有時(shí)候兩個(gè)字段數(shù)字雖然相同,但是,其實(shí)際表示的金額卻不一致。因?yàn)閮烧邔?duì)應(yīng)的貨幣符號(hào)不同。所以,有時(shí)候,我們希望在貨幣字段之前,顯示本地的貨幣符號(hào)。這可以讓用戶直觀的了解,這個(gè)是以本位幣表示的貨幣金額。
如上圖,我們希望在貨幣之前能夠顯示貨幣符號(hào)。這比上面那個(gè)結(jié)果,顯然可讀性更好。其實(shí),要實(shí)現(xiàn)這個(gè)目的,也是很簡單的。在Oracle數(shù)據(jù)庫中,提供了Format命令,可以格式化查詢結(jié)果。如要實(shí)現(xiàn)上面的結(jié)果,則可以利用這個(gè)命令來完成。
COLUMN HEADING FORMAT L9999.99;
Column是Oracle數(shù)據(jù)庫提供的一個(gè)命令。結(jié)合Format參數(shù),可以用來格式化查詢結(jié)果。在L9999.99,這個(gè)參數(shù)中,L表示在數(shù)值型字段前顯示本地貨幣符號(hào)。這里的本地貨幣符號(hào)是指在Oracle數(shù)據(jù)庫環(huán)境中設(shè)置的本地貨幣符號(hào),而跟前臺(tái)應(yīng)用程序無關(guān)。在前臺(tái)程序開發(fā)的時(shí)候,要注意跟Oracle數(shù)據(jù)庫同步。如用戶在前臺(tái)應(yīng)用軟件中,設(shè)置的本位幣是人民幣的話,則前臺(tái)程序要能夠重新設(shè)置Oracle數(shù)據(jù)庫的本地貨幣。如此的話,利用L參數(shù)才可以顯示正確的結(jié)果。
參數(shù)9表示在數(shù)值型字段上禁止顯示前導(dǎo)0。此外,他還有一個(gè)額外的功能,就是表示精度。如上面的例子中,小數(shù)點(diǎn)后面加入兩個(gè)9,就表示保留兩位小數(shù)。即使沒有小數(shù)的話,也要用0來補(bǔ)充。這也是我們?cè)诟袷交樵兘Y(jié)果的時(shí)候,常用的一個(gè)手段。
不過在利用9來限制數(shù)字精度時(shí),要注意一個(gè)問題,就是其位數(shù)一定要夠。如果某個(gè)字段,其實(shí)際值為350000,而我們提供的參數(shù)為L9999.99的話。則最后將無法顯示正確的結(jié)果。如可能會(huì)利用######來代替最終的結(jié)果。這是在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,需要注意的問題。
二、跟Format有關(guān)的其他格式控制。
Format還提供了其他一些有用的參數(shù)。
如$參數(shù)。若把COLUMN HEADING FORMAT L9999.99這個(gè)命令稍微改一下。該為COLUMN HEADING FORMAT $9999.99這個(gè)的話,那么會(huì)有什么結(jié)果?此時(shí),無論Oracle數(shù)據(jù)庫的本地貨幣符號(hào)是什么,在現(xiàn)實(shí)的結(jié)果中,都是以$開頭的貨幣。也就是說,這個(gè)參數(shù)的含義就是在數(shù)值型字段前面顯示美元符號(hào)。這跟Oracle數(shù)據(jù)庫的環(huán)境變量無關(guān)。
如上圖中,在Oracle數(shù)據(jù)庫中,對(duì)于數(shù)字型的數(shù)據(jù)類型,默認(rèn)情況下其不會(huì)用千位分隔符進(jìn)行區(qū)分。而在軟件設(shè)計(jì)中,特別是財(cái)務(wù)部門的管理軟件,往往需要利用千位分隔符來進(jìn)行劃分。如此,用戶讀起來會(huì)更加的方便。為此,在Oracle數(shù)據(jù)庫中,提供了一個(gè)“,”參數(shù)(注意是英文狀態(tài)下的逗號(hào))。這個(gè)參數(shù)指定在數(shù)字型的數(shù)據(jù)中加入千位分隔符。