SQL Server提取字段中的所有數字


今天公司項目中遇到了一個需求,要求提取用戶電話號碼字段中的所有電話信息。

由於該字段在項目最初設計中沒有嚴格控制數據質量,導致用戶在輸入時包含了很多非電話的信息,如用戶名字等(136 **** **** 張san)

要求提取出當中的136********

思路:創建函數,依次判斷每個字符的ASCII碼是否在[0,9]中,提取該部分內容。

Create Function USF_ExtractNumeric
(
    @inputStr nvarchar(50)
)
Returns nvarchar(50)
AS
Begin
    Declare @outputStr nvarchar(50)
    Set @outputStr = ''
    If ISNUMERIC(@inputStr) = 1
    Begin
        Return @inputStr
    End
    
    Declare @I Int
    Set @I = 1
    While @I <= Len(@inputStr)
    Begin
        If ASCII(SUBSTRING(@inputStr,@I,1)) <= 57 and ASCII(SUBSTRING(@inputStr,@I,1)) >= 48
        Begin
            Set @outputStr = @outputStr + SUBSTRING(@inputStr,@I,1)
        End
        Set @I = @I + 1
    End
    Return @outputStr
End

測試結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM