Solution:
DECLARE @number int
SET @number = 564843530;
WITH DigitsTable AS
(
SELECT 0 AS Power10, ABS(@Number) AS Number
UNION ALL
SELECT Power10 + 1, Number / 10
FROM DigitsTable
WHERE Number > 10
)
SELECT SUM((((Number % 10) + 3) % 10) * POWER(10, Power10)) AS NewNumber
FROM DigitsTable
OPTION (MAXRECURSION 0);
Output:
897176863
Explanation:
This answer is based on one recursive CTE which returns each current digit, new digit and multiplier for calculation:
DECLARE @number int
SET @number = 564843530;
WITH DigitsTable AS
(
SELECT 0 AS Power10, ABS(@Number) AS Number
UNION ALL
SELECT Power10 + 1, Number / 10
FROM DigitsTable
WHERE Number > 10
)
SELECT
Power10,
Number % 10 AS Digit,
((Number % 10) + 3) % 10 AS NewDigit,
POWER(10, Power10) AS Multiplier
FROM DigitsTable
OPTION (MAXRECURSION 0);
Output from recursive CTE:
Power10 Digit NewDigit Multiplier
0 0 3 1
1 3 6 10
2 5 8 100
3 3 6 1000
4 4 7 10000
5 8 1 100000
6 4 7 1000000
7 6 9 10000000
8 5 8 100000000