Найдите первый специальный символ в строке при чтении справа налево в SQL

Чтобы найти первый специальный символ в строке при чтении справа налево в SQL, вы можете использовать различные методы. Вот некоторые из них:

Метод 1: использование функций REVERSE и PATINDEX

DECLARE @str VARCHAR(100) = 'YourString';
SELECT RIGHT(@str, PATINDEX('%[^a-zA-Z0-9]%', REVERSE(@str)) - 1) AS FirstSpecialCharacter;

Метод 2: использование рекурсивного CTE (общего табличного выражения)

DECLARE @str VARCHAR(100) = 'YourString';
WITH CTE AS (
    SELECT LEN(@str) AS position, SUBSTRING(@str, LEN(@str), 1) AS character
    UNION ALL
    SELECT position - 1, SUBSTRING(@str, position - 1, 1)
    FROM CTE
    WHERE position > 1
)
SELECT character AS FirstSpecialCharacter
FROM CTE
WHERE character LIKE '%[^a-zA-Z0-9]%'
ORDER BY position
OPTION (MAXRECURSION 0);

Метод 3: использование цикла и функции CHARINDEX

DECLARE @str VARCHAR(100) = 'YourString';
DECLARE @position INT = LEN(@str);
WHILE @position > 0
BEGIN
    IF SUBSTRING(@str, @position, 1) LIKE '%[^a-zA-Z0-9]%'
    BEGIN
        SELECT SUBSTRING(@str, @position, 1) AS FirstSpecialCharacter;
        BREAK;
    END
    SET @position = @position - 1;
END