Maciej Los
Один из способов заключается в использовании КТОС[^]. Видеть:
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
Для получения более подробной информации, пожалуйста, смотрите:
With обобщенное_табличное_выражение (Transact-SQL) при SQL-сервера Майкрософт документы[
^]