星期五, 8月 26, 2011

[SQL] 字串填補函數

在 VFP 中有兩個函數 PADL() 和 PADR(),可以把字串填入特定字元至指定長度,而在 SQL Server 內則是可以利用 REPLICATE()、RIGHT() 、 LEFT() 和 LEN() 來達到相同的效果。
  • 首先建立使用者自定函數,SQL 語法如下,在此以 PADL() 為例說明。
IF OBJECT_ID(N'dbo.PADL', N'FN') IS NOT NULL
    DROP FUNCTION dbo.PADL
CREATE FUNCTION [dbo].[PADL]
(
  @String nvarchar(100),    -- 字串來源
  @PaddingChar nvarchar(1), -- 填補字元
  @StringLen tinyint        -- 字串長度
)
RETURNS nvarchar(200)
AS
BEGIN
  DECLARE @Result nvarchar(200)
   
  -- 方法一
  SET @Result = RIGHT(REPLICATE(@PaddingChar,@StringLen) + @String,@StringLen)
   
  -- 方法二
  SET @Result = REPLICATE(@PaddingChar,@StringLen - LEN(@String)) + @String
   
  RETURN @Result
END
GO
  • 方法一:依據使用者輸入的填補字元和預計字串長度,使用 REPLICATE()來產生完整的填補字元字串,並和原字串串接後,再利用 RIGHT()擷取字元。
  • 方法二:依據使用者欲達到的字元長度扣掉原字串長度後,即為填補字元所需數量,再利用 REPLICATE()產生。
  • 使用方法
SELECT 
  [NO],
  dbo.PADL([NO],'0',10) AS [PADL],
  dbo.PADR([NO],'0',10) AS [PADR]
FROM
  (  
    SELECT '1' AS NO
    UNION ALL
    SELECT '12'
    UNION ALL
    SELECT '123'
    UNION ALL
    SELECT '1234'
    UNION ALL
    SELECT '12345'
  ) AS T
  • 結果
字串填補函數

沒有留言:

張貼留言