21

次の文字列があります。

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

同じことを行う他の簡単でエレガントな方法はありますか?

4

4 に答える 4

39
select left(@str, patindex('%[^0-9]%', @str+'.') - 1)
于 2012-05-04T06:11:42.690 に答える
6

これを確認してください、私は私のプロジェクトで電話番号を抽出するために使用しました

 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
于 2012-05-04T06:05:07.800 に答える