Я бы порекомендовал комбинацию PatIndex и Left. Тщательно продуманный, вы можете написать запрос, который всегда работает, независимо от того, как выглядят ваши данные.
Ex:
Declare @Temp Table(Data VarChar(20))
Insert Into @Temp Values('BTA200')
Insert Into @Temp Values('BTA50')
Insert Into @Temp Values('BTA030')
Insert Into @Temp Values('BTA')
Insert Into @Temp Values('123')
Insert Into @Temp Values('X999')
Select Data, Left(Data, PatIndex('%[0-9]%', Data + '1') - 1)
From @Temp
PatIndex будет искать первый символ, который находится в диапазоне 0-9, и возвращает его положение символа, которое вы можете использовать с функцией ВЛЕВО, чтобы извлечь правильные данные. Обратите внимание, что PatIndex фактически использует Data + '1'. Это защищает нас от данных, где номера не найдены. Если чисел нет, PatIndex вернет 0. В этом случае функция LEFT выдаст ошибку, потому что мы используем Left (Data, PatIndex - 1). Когда PatIndex возвращает 0, мы получим Left (Data, -1), который возвращает ошибку.
Есть еще способы, которыми это может потерпеть неудачу. Для полного объяснения, я призываю вас прочитать:
Извлечение чисел с помощью SQL Server
В этой статье показано, как получить числа из строки. В вашем случае вы хотите получить вместо этого альфа-символы. Однако процесс достаточно схож, так что вы, вероятно, сможете извлечь из него что-то полезное.