close

USE [TEMPDB]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_FUZZY]    Script Date: 2017/7/28 下午 04:29:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:  
-- Create date: 20150212
-- Description: 去識別化ID供JOB_GVReport
-- select dbo.fn_FUZZY(3,0,0,'X','F123456789') //從左邊開始保留,餘取代變數  ##得到 F12XXXXXXX
-- select dbo.fn_FUZZY(3,0,2,'X','F123456789') //從左邊第三位開始取二位,取代變數 ##得到 F12XX56789
-- select dbo.fn_FUZZY(0,5,0,'X','F123456789') //從右邊開始保留,餘取代變數  ##得到 XXXXX56789
-- select dbo.fn_FUZZY(3,0,2,'X','F123456789') //從右邊第三位開始取二位,取代變數  ##得到 F12XX56789
-- 左邊保留位數,右邊保留位數,取幾位,替代的變數,字串
-- 20170523 若長度=1時,則不予處理
-- =============================================
ALTER FUNCTION [dbo].[fn_FUZZY]

     @left int,
  @right int,
  @int int,
  @strrep CHAR(1),
  @str varchar(10)
)
RETURNS  VARCHAR(500)
AS
BEGIN  
   
    if (@str <> '' and len(@str) > 2)
 begin    
     --左邊保留位數
  if (@left <> 0  AND  @int = 0)
  begin
   SET @str = LEFT(@str,@left)+ replicate(@strrep,len(@str)-@left)
  end

  --左邊保留位數
  if (@left <> 0  AND  @int <> 0)
  begin
   SET @str =+ LEFT(@str,@left)+ replicate(@strrep, @int)  + RIGHT(@str,len(@str) - (@left+@int))
  end

  --右邊保留位數
  if (@right <> 0  AND  @int = 0)
  begin
   SET @str =  replicate(@strrep,len(@str)-@right)+ RIGHT(@str,@right)
  end

  --右邊保留位數
  if (@right <> 0  AND  @int <> 0)
  begin
   SET @str =+ LEFT(@str,len(@str) - (@right+@int))+ replicate(@strrep, @int) +  RIGHT(@str,@right)
  end
 end 

 RETURN @str
END

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 可樂果公主 的頭像
    可樂果公主

    聽說幸福…在山的那邊 (浪機子)

    可樂果公主 發表在 痞客邦 留言(0) 人氣()