복붙노트

[SQL] 어떻게 T-SQL을 사용하여 문자열에서 숫자 부분을 얻으려면?

SQL

어떻게 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

같은 일을 다른 어떤 쉬운 / 우아한 방법이 있나요?

해결법

  1. ==============================

    1.

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

    2.경우에는 귀하의 문자열은 ERT-123 같은 번호를 가진 알파벳과 끝과 시작

    경우에는 귀하의 문자열은 ERT-123 같은 번호를 가진 알파벳과 끝과 시작

    이 쿼리를 사용할 수 있습니다 :

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

    3.이 확인하시기 바랍니다, 내가 전화 번호를 추출 내 프로젝트에 사용

    이 확인하시기 바랍니다, 내가 전화 번호를 추출 내 프로젝트에 사용

     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
    
  4. ==============================

    4.포맷되지 않은 문자열에서 숫자를 추출하려면

    포맷되지 않은 문자열에서 숫자를 추출하려면

    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]
    
  5. from https://stackoverflow.com/questions/10443462/how-to-get-the-numeric-part-from-a-string-using-t-sql by cc-by-sa and MIT license