FORMAT
не работает с типами текста.Извлеченная числовая часть должна быть сначала преобразована в целое число, чтобы отформатировать ее, например:
update Table_A
set code=FORMAT(cast( SUBSTRING(code, PATINDEX('%[0-9]%', code), PATINDEX('%[0-9][^0-9]%', code + 't') - PATINDEX('%[0-9]%', code) + 1)
as int)
,'00000000')
Например:
declare @table_A table (ID int, Code nvarchar(20))
insert into @table_A (ID,Code)
values
(1,'s33404tft'),
(2,'dd345ui'),
(3,'456567t'),
(4,'8746');
update @table_A
set code=FORMAT(cast(SUBSTRING(code, PATINDEX('%[0-9]%', code), PATINDEX('%[0-9][^0-9]%', code + 't') - PATINDEX('%[0-9]%', code) + 1) as int)
,'00000000')
select * from @table_A
Производит:
ID Code
1 00033404
2 00000345
3 00456567
4 00008746