簡體   English   中英

如何使用T-SQL從字符串中獲取數字部分?

[英]How to get the numeric part from a string using T-SQL?

我有以下字符串。

Input
--------------
2030031469-NAI 

要獲取數字部分,我使用以下腳本

declare @str varchar(50)= '2030031469-NAI'

Select 
    @str
    ,SUBSTRING(@str, 1,  NULLIF(CHARINDEX('-', @str) - 1, -1))
        ,Left(@str,PATINDEX('%-%',@str)-1)

獲得以下輸出

Output: 
----------
2030031469

有沒有其他簡單/優雅的方式做同樣的事情?

select left(@str, patindex('%[^0-9]%', @str+'.') - 1)

請檢查一下,我在我的項目中用於提取電話號碼

 CREATE Function [dbo].[RemoveNonNumericCharacters](@Temp VarChar(1000))
    Returns VarChar(1000)
    AS
    Begin

        While PatIndex('%[^0-9]%', @Temp) > 0
            Set @Temp = Stuff(@Temp, PatIndex('%[^0-9]%', @Temp), 1, '')

        Return @TEmp
    End

如果您的字符串以字母開頭並以ERT-123之類的數字結尾

你可以使用這個查詢:

 (select  substring(@str,patindex('%[0-9]%', @str),len(@str)))

從未格式化的字符串中提取數字

DECLARE @Text NVARCHAR(100)= 'extract only 23124R integer @#%%'
SELECT SUBSTRING(@Text, PATINDEX('%[0-9]%',@Text), PATINDEX('%[^0-9]%',SUBSTRING(@Text, PATINDEX('%[0-9]%',@Text), LEN(@Text)))-1) [ONLY_INT]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM