解决sql server取出一段字符串的倒数第几个词(以某个分隔符分割)

如下所示,仅供参考

CREATE OR ALTER FUNCTION MYFUN(@S VARCHAR(100), @n int, @p varchar(10))--@n--->需要拼接几个单词
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE
@RS VARCHAR(100), --最终拼接后返回的结果字符串
@LENGTH INT,      --目标字符串以某个分隔符分割后的数量
@i INT = 1        --循环次数,与@n形成计算公式,代表每次循环拼接的是倒数第几个
SET @LENGTH = (SELECT Count(value)  FROM  String_split(@S, @p))--使用String_split(目标字符串, 分隔符)表函数,该函数分割后返回单列表,列名是value
SET @RS = ''; --赋初始值,为空(不是空格哦)
--验证传入的字符串是否大于等于拼接后的字符串
IF @LENGTH < @n
BEGIN
RETURN '目标字符串长度小于拼接后字符串'
END;
WHILE @i <= @N --开始循环
BEGIN
--Row_number()OVER(ORDER BY Getdate()) 查询时添加序号,并且不改变原来的顺序
--@LENGTH - @n + @i 按正序拼接
SET @RS = 
(SELECT CONCAT(@RS,
(SELECT value
FROM   (SELECT value,
               Row_number()
                 OVER(
                   ORDER BY Getdate()) AS rn
        FROM   String_split(@S, @p)) t
WHERE  rn = @LENGTH - @n + @i), ' '));
SET @i = @i + 1;
END;
RETURN @RS

END;

SELECT DBO.MYFUN('苹果 香蕉 雪梨 荔枝 西瓜', 3, ' ') --

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易守年嘉爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值