gpt4 book ai didi

mysql - 从t-sql中的末尾获取字符串中第一次出现char的索引

转载 作者:行者123 更新时间:2023-11-29 04:44:37 27 4
gpt4 key购买 nike

如果有任何帮助,我将不胜感激

我有一个字符串代表一个月的工作日和休息日:

 @month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWWWW' -- H - Holiday, W-Working day, total 31 days

我需要获取当月最后一个工作日的 index,在本例中为 31

或者如果

@month_col = 'HHWHHWHWWWHHWWWWWHHWWWWWHHWWHHH' 

那么最后工作日是28。

我知道如何获得第一个工作日:

--FIRST WORKING DAY OF MONTH
WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@month_col, @index, 1)
IF @char = 'W'
begin
select @first_day = CHARINDEX(@char, @month_col)
break
end
SET @index= @index+ 1
END

那么,最后一个呢?我试图反向迭代但得到 NULL。提前致谢!

最佳答案

反转字符串。

SET @Reversed = Reverse(@month_col);
WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@Reversed, @index, 1)
IF @char = 'W'
begin
select @first_day = CHARINDEX(@char, @Reversed)
break
end
SET @index= @index + 1
END
SET @lastday= @len - @first_day + 1

编辑:我认为您的原始代码可以简单得多。不需要循环,使用 CHARINDEX 即可。

SELECT @first_day = CHARINDEX('W', @month_col, 1)

我的代码如下所示:

SELECT @first_day = CHARINDEX('W', REVERSE(@month_col), 1)
SET @lastday= @len - @first_day + 1

关于mysql - 从t-sql中的末尾获取字符串中第一次出现char的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21304420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com