CREATE FUNCTION dbo.ExtractLastValueBetweenBrackets
(
@Input NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @StartIndex INT, @EndIndex INT;
-- 使用 REVERSE 和 CHARINDEX 找到最后一个 '<' 的位置
DECLARE @ReverseInput NVARCHAR(MAX) = REVERSE(@Input);
DECLARE @LastLessThanIndex INT = CHARINDEX('<', @ReverseInput);
-- 如果没有 '<',则返回 NULL 或空字符串
IF @LastLessThanIndex = 0
BEGIN
RETURN 0; -- 或者 '',根据你的需求
END
-- 计算原始字符串中最后一个 '<' 的位置
SET @StartIndex = LEN(@Input) - @LastLessThanIndex + 1;
-- 从该位置开始,向前查找第一个 '>' 的位置
SET @EndIndex = CHARINDEX('>', @Input, @StartIndex);
-- 如果没有找到 '>',则可能字符串格式不正确,返回 NULL 或空字符串
IF @EndIndex = 0
BEGIN
RETURN 0; -- 或者 '',根据你的需求
END
-- 提取并返回 '<' 和 '>' 之间的内容
RETURN SUBSTRING(@Input, @StartIndex + 1, @EndIndex - @StartIndex - 1);
END
GO
提取括号之间的最后值
最新推荐文章于 2024-09-01 15:30:33 发布