2012-05-04 1 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

これを確認してください、私はあなたの文字列は、あなたがERT-123

のような数でアルファベットと終わりで始まる電話番号の場合

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-extracted-data-againこれは本当に良いです – Maddy

2

を抽出するための私のプロジェクトで使用されますこのクエリを使用することができます:

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