One of the way is to use
CTE[
^]. See:
DECLARE @tmp TABLE(AutoIncStringNumber VARCHAR(50))
INSERT INTO @tmp (AutoIncStringNumber)
VALUES('AA000'), ('1B1234') , ('D003')
;WITH CTE AS
(
SELECT LEFT(AutoIncStringNumber, 2) AS Prefix, RIGHT(AutoIncStringNumber, LEN(AutoIncStringNumber) - 2) AS OldNumber,
CONVERT(INT, RIGHT(AutoIncStringNumber, LEN(AutoIncStringNumber) -2)) +1 AS NewNumber
FROM @tmp
WHERE PATINDEX('%[A-Z][0-9]%', AutoIncStringNumber)=2
UNION ALL
SELECT LEFT(AutoIncStringNumber, 1) AS Prefix, RIGHT(AutoIncStringNumber, LEN(AutoIncStringNumber) - 1) AS OldNumber,
CONVERT(INT, RIGHT(AutoIncStringNumber, LEN(AutoIncStringNumber) -1)) +1 AS NewNumber
FROM @tmp
WHERE PATINDEX('%[A-Z][0-9]%', AutoIncStringNumber)=1
)
SELECT CONCAT(Prefix, LEFT(OldNumber, LEN(OldNumber)-LEN(NewNUmber)), NewNumber) AS NewValue
FROM CTE
For further details, please see:
WITH common_table_expression (Transact-SQL) - SQL Server | Microsoft Docs[
^]