SQL Server UDF填充字符串的正確運用方案
以下的文章主要描述的是正確運用SQL Server UDF填充字符串的實際操作步驟,這個問題看似很簡單,即在創(chuàng)建一個用戶定義的實際操作函數(shù),這個函數(shù)允許填充理想字符是有限數(shù)量的一個字符串。
一旦我決定填充的位置能夠定制以便滿足最終用戶的要求時,這個實驗就變成一個涉及更多問題的函數(shù)從而變得不能滿足需要了。
雖然Transact-SQL (T/SQL)沒有提供一個類似于其他關(guān)系數(shù)據(jù)庫所提供的LPAD和RPAD的可比函數(shù),但是SQL Server專業(yè)版提供了REPLICATE()函數(shù),它可以用來建立一個簡單的用戶定義函數(shù)從而填充一個字符串。在講解定制填充函數(shù)的代碼之前,讓我們來看看這個REPLICATE()函數(shù)以及它能夠提供什么吧。
REPLICATE (string_expression ,integer_expression)允許你復(fù)制一個字符串(string_expression參數(shù)是指每個integer_expression參數(shù)連續(xù)的次數(shù))。
下面是這個函數(shù)的一個簡單實例:
- SELECT REPLICATE('ABCDE|', 3)
- ABCDE|ABCDE|ABCDE|
- (1 row(s) affected)
盡管REPLICATE()函數(shù)允許你返回一個最高可達(dá)8000字節(jié)的字符串,我將要創(chuàng)建的這個函數(shù)將基于varchar(100)的一個輸出結(jié)果值。你可以修改這個值來滿足你的要求,盡管如此,我很少需要填充一個大于20個字符的字符串值。
我認(rèn)為創(chuàng)建一個函數(shù)用于一個未SQL Server UDF填充字符串的左邊或右邊是值得的。接下來,問題就變得很有趣,那就是如果由于某些原因你需要在字符串中間填充怎么辦?在該字符串的左邊和右邊都平均填充怎么樣呢?無論你是否使用這些選項,這個功能都會提供給你。下面的代碼就是我創(chuàng)建的函數(shù)。
- CREATE FUNCTION [dbo].[usp_pad_string]
- (
- @string_unpadded VARCHAR(100),
- @pad_char VARCHAR(1),
- @pad_count tinyint,
- @pad_pattern INT)
- RETURNS VARCHAR(100)
- AS
- BEGIN
- DECLARE @string_padded VARCHAR(100)
- SELECT @string_padded =
- CASE @pad_pattern
- WHEN 0 THEN REPLICATE(@pad_char, @pad_count) + @string_unpadded --pad left
- WHEN 1 THEN @string_unpadded + REPLICATE(@pad_char, @pad_count) --pad right
- WHEN 2 THEN
- --pad center
- LEFT(@string_unpadded, FLOOR(LEN(@string_unpadded)/2))
- + REPLICATE(@pad_char, @pad_count)
- + RIGHT(@string_unpadded, LEN(@string_unpadded) - FLOOR(LEN(@string_unpadded)/2))
- WHEN 3 THEN
- --pad edges
- REPLICATE(@pad_char, FLOOR(@pad_count/2))
- + @string_unpadded
- + REPLICATE(@pad_char, @pad_count - FLOOR(@pad_count/2))
- END
- RETURN @string_padded
- END
以上的相關(guān)內(nèi)容就是對運用SQL Server UDF填充字符串的介紹,望你能有所收獲。
【編輯推薦】
- 安裝SQL Server 2005數(shù)據(jù)庫的性能監(jiān)視器計數(shù)器
- SQL Server視圖運行的提高與索引
- SQL Server性能進(jìn)行提高的4項技術(shù)概述
- SQL Server數(shù)據(jù)轉(zhuǎn)換服務(wù)的妙招之一
- SQL Server數(shù)據(jù)庫的妙招用法