Here is the solution:
EDIT:
DECLARE @T AS TABLE(code Varchar(20))
INSERT INTO @T SELECT 'ab1234x1' UNION SELECT ' ab1234x2'
UNION SELECT ' ab1234x3' UNION SELECT 'a b1234x4'
UNION SELECT 'a b1234x5' UNION SELECT 'a b1234x6'
UNION SELECT 'ab 1234x7' UNION SELECT 'ab 1234x8'
SELECT * FROM @T
DECLARE @s Varchar(20)
DECLARE @firstChar INT
DECLARE @secondChar INT
UPDATE @T SET
@firstChar = PATINDEX('%[^ ]%',code)
,@secondChar = @firstChar + PATINDEX('%[^ ]%', STUFF(code,1, @firstChar,'' ) )
,@s = STUFF(
code,
1,
@secondChar,
REPLACE(LEFT(code,
@secondChar
),' ','')
)
,@s = STUFF(
@s,
1,
2,
UPPER(LEFT(@s,2))
)
,code = @s
SELECT * FROM @T