2018年1月13日 星期六

剔除地址中全形數字字元

剔除地址中全型數字字元最直接作法即可使用REPLACE函數,但需採用呼叫函數10次,或近似迴圈想法才可解決,以下介紹TRANSLATE函數及REGEXP_REPLACE函數,新版MSSQL已提供TRANSLATE函數,MSSQL使用者可嘗試使用。

1.  TRANSLATE函數
此函數可使用字元對應轉換(即翻譯),此函數將依照轉換(string_to_replace:replacement_string)定義(N:1)進行轉換,如無可對應者則轉為空字串,請特別注意replacement_string不得為空字串,否則將轉為NULL。範例中也展示如何將全形數字轉為半形數字。
TRANSLATE( string1, string_to_replace, replacement_string )

2.  REGEXP_REPLACE函數
REGEXP_REPLACE(source_string
                , pattern
               [, replace_string [, position [,occurrence, [match_parameter]]]]
               )


SELECT Addr
       , TRANSLATE(Addr, '@0123456789', '@')
       , TRANSLATE(Addr, '@0123456789', '@0123456789')      
       , REGEXP_REPLACE(Addr, '[0123456789]','')
FROM
    (      
    SELECT '10090台北市中正區羅斯福路9段1號3樓' Addr
    FROM DUAL
    UNION ALL
    SELECT '100台北市中正區幸忠孝東路9段19號4樓'
    FROM DUAL
    UNION ALL
    SELECT '台北市中正區忠孝東路5段49號'
    FROM DUAL

     ) 

沒有留言:

張貼留言