sql写一个函数,按照次序顺序缩进,加号越多,越多缩进

/*
ZN表
ZN
A
A+B
A+B+C
A+B+D

变成
A
  B
    C
    D
*/    
create FUNCTION CFN_ZN (@inputString VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
/*
SELECT dbo.CFN_ZN('A')--A
SELECT dbo.CFN_ZN('A+B') --      B
SELECT dbo.CFN_ZN('A+B+C') --            C
*/
BEGIN
    DECLARE @lastPlusPosition INT;
    DECLARE @plusCount INT;  -- 用于存储 "+" 号的数量

    SET @plusCount = (LEN(@inputString) - LEN(REPLACE(@inputString, '+', ''))); -- "+" 号的数量

    SET @lastPlusPosition = LEN(@inputString);

    WHILE @lastPlusPosition > 0 AND SUBSTRING(@inputString, @lastPlusPosition, 1) <> '+'
    BEGIN
        SET @lastPlusPosition = @lastPlusPosition - 1;
    END

    IF @lastPlusPosition > 0
    BEGIN
        SET @inputString = 
            CASE 
                WHEN @plusCount = 1 THEN '      ' + RIGHT(@inputString, LEN(@inputString) - @lastPlusPosition)
                WHEN @plusCount = 2 THEN '            ' + RIGHT(@inputString, LEN(@inputString) - @lastPlusPosition)
                ELSE @inputString
            END;
    END

    RETURN @inputString;
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值