WITH last AS (
SELECT MAX(Dep_user_code) AS Code
FROM NEC_Customer_User_Map
WHERE LEFT(Dep_user_code, 7) = 'NECUSER'
)
SELECT LEFT(Dep_user_code, 7) + RIGHT(CAST(STUFF(Code, 1, 7, '1') AS int) + 1, 4)
FROM last
Часть RIGHT
выполняет следующие действия:
- заменяет
'NECUSER'
на '1'
, получая что-то вроде '10002'
;
- приводит к результату как
int
;
- увеличивается на 1;
- (неявно) преобразует значение в
varchar
и получает последние 4 символа.
Может быть, STUFF(Code, 1, 7, '1')
лучше заменить на '1' + RIGHT(Code, 4)
, не уверен.
РЕДАКТИРОВАТЬ: Как это бывает, неявное преобразование может также использоваться в случае преобразования строки в целое число тоже:
... + RIGHT(STUFF(Code, 1, 7, '1') + 1, 4) ...
или
... + RIGHT('1' + RIGHT(Code, 4) + 1, 4) ...