Как сказано в комментарии ранее:
О вашем вопросе Как бы я разработал что-то подобное? :
Не храните две части информации в одном столбце (прочитайтео 1.NF ).Вы должны хранить отдельные столбцы в вашей базе данных для BPO и для 007 (или, скорее, целое число 7 ).
Затем используйте некоторые строковые методы для вычисления BPO007 когда вам это нужно на выходе.
Только чтобы не оставить вас в одиночестве под дождем.
DECLARE @tbl TABLE(YourColumn VARCHAR(100));
INSERT INTO @tbl VALUES('BPO007'),('GFE0035');
SELECT YourColumn,pos
,LEFT(YourColumn,pos) AS CharPart
,CAST(SUBSTRING(YourColumn,pos+1,1000) AS INT) AS NumPart
FROM @tbl
CROSS APPLY(SELECT PATINDEX('%[0-9]%',YourColumn)-1) AS A(pos);
Вернется
YourColumn pos CharPart NumPart
BPO007 3 BPO 7
GFE0035 3 GFE 35
Подсказка: я использую CROSS APPLY
здесь, чтобы вычислить позицию первого числового символа, а затем использую pos
в реальном запросе, как если бы вы использовали переменную.В противном случае PATINDEX
пришлось бы повторить ...