Чтобы найти первый специальный символ в строке при чтении справа налево в 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