wtorek, 23 listopada 2010

CTE i odwrócenie STRINGa

Dość często słyszę, że na rozmowach kwalifikacyjnych na stanowisko programisty dostaje się zadanie p.t. odwrócenie STRINGa. Oczywiście nie chodzi tu o użycie istniejącej funkcji, ale o napisanie swojej. I tu w ramach fascynacji CTE pomyślałem, że może zrobić to w T-SQL ale za pomocą pojedynczego zapytania. No i wyszło mi coś takiego :

DECLARE @STRING AS VARCHAR(8000);
SET @STRING = '123456789';

WITH CTE
AS 
(
    SELECT CAST(RIGHT(@STRING, 1) AS VARCHAR(8000)) AS REVERSE_STRING
        , DATALENGTH(@STRING) - 1 AS I
    
    UNION ALL
    
    SELECT REVERSE_STRING + RIGHT(LEFT(@STRING, I), 1)
        , I - 1
    FROM CTE
    WHERE I > 0
)
SELECT REVERSE_STRING
FROM CTE
WHERE I = 0
OPTION(MAXRECURSION 8000);

Brak komentarzy:

Prześlij komentarz