You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL 2014环境下如何实现斜杠分隔字符串的元素顺序反转

实现方案

SQL Server 2014 没有内置的字符串拆分、聚合函数,我们可以通过XML解析的方式完成需求,可直接运行以下测试代码验证效果:

DECLARE @InputStr VARCHAR(100) = '1119/2/483/11021';
DECLARE @ReversedStr VARCHAR(100);

-- 拆分字符串并生成原始序号
WITH SplitItems AS (
    SELECT 
        LTRIM(RTRIM(x.node.value('.[1]', 'varchar(100)'))) AS Item,
        ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS SortId
    FROM (
        -- 将字符串转为可解析的XML格式
        SELECT CAST('<root><item>' + REPLACE(@InputStr, '/', '</item><item>') + '</item></root>' AS XML) AS XmlContent
    ) AS t
    CROSS APPLY XmlContent.nodes('/root/item') x(node)
)
-- 倒序拼接回字符串
SELECT @ReversedStr = STUFF(
    (
        SELECT '/' + Item
        FROM SplitItems
        ORDER BY SortId DESC
        FOR XML PATH(''), TYPE
    ).value('.[1]', 'varchar(100)'),
    1, 1, '' -- 移除开头多余的斜杠
);

-- 输出结果
SELECT @ReversedStr AS ReversedResult;

执行后输出结果为 11021/483/2/1119,符合需求。

如果需要反复使用该逻辑,可以封装为标量函数:

CREATE FUNCTION dbo.ReverseDelimitedStr
(
    @Input VARCHAR(MAX),
    @Delimiter CHAR(1)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @Result VARCHAR(MAX);

    WITH SplitItems AS (
        SELECT 
            LTRIM(RTRIM(x.node.value('.[1]', 'varchar(MAX)'))) AS Item,
            ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS SortId
        FROM (
            SELECT CAST('<root><item>' + REPLACE(@Input, @Delimiter, '</item><item>') + '</item></root>' AS XML) AS XmlContent
        ) AS t
        CROSS APPLY XmlContent.nodes('/root/item') x(node)
    )
    SELECT @Result = STUFF(
        (
            SELECT @Delimiter + Item
            FROM SplitItems
            ORDER BY SortId DESC
            FOR XML PATH(''), TYPE
        ).value('.[1]', 'varchar(MAX)'),
        1, 1, ''
    );

    RETURN @Result;
END
GO

调用示例:

SELECT dbo.ReverseDelimitedStr('1119/2/483/11021', '/')

注意事项

如果输入字符串包含<、>、&这类XML特殊字符,需要先对字符做转义处理,常规纯数字、普通字母场景下可直接使用。

内容的提问来源于stack exchange,提问作者elhassan ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:18:02