2012-05-04 4 views
11

다음 문자열이 있습니다. T-SQL을 사용하여 문자열에서 숫자 부분을 가져 오는 방법은 무엇입니까?

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

는 같은 일을 다른 어떤 쉬운/우아한 방법이 있나요, 나는 다음과 같은 출력

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

을 얻기 위해 다음 스크립트

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

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

을 사용하고있는 숫자 부분을 얻으려면 ?

답변

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

이 답변을 좋아합니다! –

3

이 확인하시기 바랍니다, 난 당신의 문자열을 알파벳으로 시작하여 123 ERT-

같은 번호를 끝낼 경우 전화 번호

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 
+0

이 블로그에서 발견 된 내용 http : //blogs.lessthandot .com/index.php/DataMgmt/DataDesign/sql-server-extracting-data-again 이것은 정말 좋은 답변입니다. – Maddy

2

을 추출하는 내 프로젝트에 사용 이 쿼리를 사용할 수 있습니다 :

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