Como obter a parte numérica de uma string usando o T-SQL?

Eu tenho a seguinte string.

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

Para obter a parte numérica, estou usando o seguinte script

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

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

para obter o seguinte resultado

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

Existe alguma outra maneira fácil / elegante de fazer o mesmo?

questionAnswers(4)

yourAnswerToTheQuestion