無論是從**、內部應用程式,還是從檔案將資料輸入到sql server系統中,資料的展示都是乙個應當始終關注的問題。
【it專家網獨家】本文我們將建立乙個在更新資料或以一種讓人看起來順眼的方式為終端使用者展示資料方面非常有用的函式。本文的例子適用於sql server 2000及以上的版本。
資料展示(data presentation)
資料被源系統接收並加工時,並不總是以一種看起來很舒服的形式出現在我們面前的。例如可能所有的資料都是大寫的或所有資料都是小寫的,資料可能在必要的地方沒有新增標點符號等類似的情況都會出現。
很多時候,資料展示並不是什麼大不了的事情,也就是從資料庫將資料抽取出來並按照它們的原樣呈現出來。不過,有些時候,我們就有必要讓資料看起來更像樣一點,例如將資料放到網頁上的時候。
展示資料的方法有好幾種,有可以通過網頁**本身展示,還有可以在資料庫裡進行格式化。下面的例子將介紹乙個簡單的函式,你可以用它來返回資料到終端使用者或在資料庫中更新資料,這樣資料就可以一直以同一種方式來儲存。
下面就是用來建立名為udf_correctcasing函式的指令碼。這個函式將接受任何長度的字串,並返回相同的字串,但字串中每個單詞的首字母都會轉換為大寫字母,而單詞剩下的部分都轉換為小寫字母。例如,如果將字串「hello guys」傳遞給函式,那麼就會返回「hello guys」:
create function udf_correctcasing
(@string varchar(max)
)returns varchar(max)
begin
declare @length int, @increment int, @newstring varchar(max)
declare @currentcharacter char(1), @previouscharacter char(1)
set @length = len(ltrim(rtrim(@string)))
set @increment = @length - 1
set @newstring = ''
set @previouscharacter = ''
set @string = lower(@string)
while @increment >= 0
begin
set @currentcharacter = substring(@string, (@length-@increment), 1)
set @newstring = @newstring + case when @previouscharacter = '' then
upper(@currentcharacter) else @currentcharacter end
set @previouscharacter = @currentcharacter
set @increment = @increment - 1
endreturn(@newstring)
end函式詳解
我們需要將傳遞給該函式的字串中的所有字元都迴圈一遍,看看是不是按我們的需要改變大小寫狀態。這可能會讓函式執行起來相對慢些,但不會慢到你能注意到的地步。還有其他的方法可以完成這個函式的任務,例如在公共語言執行庫(clr)中使用正規表示式(regular expression),不過對於我們要達到的目的,用這個函式就可以了。
首先,我們確定字串的長度。接著,我們設定了一些隨後將在函式中用到的協助器變數。然後,我們將所有的字元都設定為小寫。在迴圈裡,我們建立了乙個新字串,新增最新字元並通過檢查前乙個字元是否為空格符來決定該字元的大小寫狀態。如果前乙個字元是空格符,那麼下乙個字元就應當轉換為大寫狀態。一旦把字串裡所有的字元都迴圈了一遍,就返回該新字串。
下面是如何呼叫這個udf_correctcasing函式的乙個例子:
select dbo.udf_correctcasing(address) from customers;
下面是如何呼叫這個函式去更新名為customers表中的address列資料的乙個例子:
update customers
set address = dbo.udf_correctcasing(address)
按需而變
上面編寫的這個函式只是乙個簡單的函式,用來把你傳遞到該函式的所有單詞的首字母轉換為大寫形式。雖然有一定的用處,但很可能並不能滿足你對「美化」資料的所有要求。你可能需要將所有類似於dba、sql這類縮寫名稱或者dr、mr等姓名字首的所有字母都以大寫形式呈現,或者還要在這些單詞的各個字母後面加上乙個句點。
你可以對這個函式進行一些改進,一遍得到你想要的結果。如果你在嘗試的過程中失敗了,可以重新複製這個指令碼再從頭開始改編。
SQL Server 修改資料庫
檢視資料庫資訊execute sp helpdb northwind刪除資料庫 包括其中所有資料檔案,在不使用本資料庫的狀態下才能執行。drop database northwind修改資料庫名alter database northwind modify name northwind 000增添資...
sql server修改資料庫名稱
use master go 修改資料庫名稱 alter database hroa i set single user with rollback immediate goexec master.sp renamedb hroa i hp oa goalter database hp oa set ...
SQL Server 游標的使用 迴圈修改資料
begin declare id int,returnrequestid varchar 32 returnauditor varchar 32 returndate datetime 宣告游標變數 set id 0 此處id相當於for迴圈裡的i declare order cursor curs...