Вот версия, которая использует PATINDEX
.Он ищет первое число в строке.
declare @MyString varchar(100)
set @MyString = '<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'
select PATINDEX('%[0-9]%', @MyString), PATINDEX('%[^0-9]%', SUBSTRING(@MyString, PATINDEX('%[0-9]%', @MyString), len(@MyString)))
select SUBSTRING (@MyString, PATINDEX('%[0-9]%', @MyString),
PATINDEX('%[^0-9]%', SUBSTRING(@MyString, PATINDEX('%[0-9]%', @MyString), len(@MyString))))