¿Cómo obtener la parte numérica de una cadena usando T-SQL?

Tengo la siguiente cadena.

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

Para obtener la parte numérica, estoy usando el siguiente script

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

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

para obtener la siguiente salida

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

¿Hay alguna otra manera fácil / elegante de hacer lo mismo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta